Понимание параметров команды сценария -I и -O для разделения пользовательского ввода/выводаLinux

Anonymous
Понимание параметров команды сценария -I и -O для разделения пользовательского ввода/вывода

Сообщение Anonymous »

Мне нужно разделить ввод и вывод пользователя в интерактивной оболочке для аудита.
Итак, если пользователь в сеансе ssh запускается

Код: Выделить всё

0e2d6ff9f865:~$ whoami
И вывод терминала Файл input.log будет содержать «0e2d6ff9f865:~$ whoami», а файл output.log будет содержать «ubuntu».
Я смотрю в команде сценария, которая выглядит так, может помочь использование опций -I и -O:

Код: Выделить всё

Usage:
script [options] [file]

Make a typescript of a terminal session.

Options:
-I, --log-in            log stdin to file
-O, --log-out           log stdout to file (default)

Но когда я бегу

Код: Выделить всё

script -f -c "ssh -l ubuntu localhost -p 22" -I /tmp/in.log -O /tmp/out.log
А затем в сеансе ssh я пишу whoami и получаю в ответ ubuntu, /tmp/out.log содержит как ввод, так и вывод:

Код: Выделить всё

Script started, output log file is '/tmp/out.log', input log file is '/tmp/in.log'.
Welcome to OpenSSH Server
0e2d6ff9f865:~$ whoami
ubuntu
И /tmp/in.log содержит что-то странное, например (после трехкратного запуска «whoami»)

Код: Выделить всё

Script started on 2025-01-08 10:19:36+00:00 [TERM="xterm" TTY="/dev/pts/2" COLUMNS="120" LINES="9"]
whoami^Mwhoami^M^[[A^M
Чего мне не хватает? Почему выходной файл содержит еще и входные команды?
Почему входной файл выглядит так? например, печать странных символов, а не запись каждого журнала в новой строке.
Есть ли простой подход к разделению пользовательского ввода и вывода, как мне нужно?

Подробнее здесь: https://stackoverflow.com/questions/793 ... put-output

Вернуться в «Linux»