Я нашел решение с помощью "| tee -a logfile". Есть ли другое решение для этого? Мне нужны только команды в файле журнала, а не весь вывод, если это возможно.
Вы можете использовать команду script
для регистрации всего вывода терминала, который при нормальных обстоятельствах включает все набранные команды.
Вызов может выглядеть следующим образом, если вы хотите добавить к одному файлу:
script -a -f -c 'ssh cisco.example.com' /var/local/log/ssh-cisco.log
Или вот так, если вам нужны отдельные файлы для каждого вызова:
script -f -c 'ssh cisco.example.com' "/var/local/log/ssh-cisco-$(date date +%Y-%m-%d_%H:%M:%S.%N).$$.log"
Если бы пользователю потребовалось вводить эти команды самостоятельно, он, конечно, был бы слишком ленив, чтобы делать все эти дополнительные вводы для включить ведение журнала. И написание всего этого в сценарии оболочки может быть недостаточно для вас, поскольку я предполагаю, что вы не хотите, чтобы пользователи могли обходить ведение журнала.
Таким образом, вы хотите, чтобы пользователи не имели доступа к обойти ведение журнала, и вы также не хотите, чтобы у них был доступ на запись к каталогу, содержащему журналы.
Вы можете настроить отдельную группу, которая имеет доступ для чтения к ключу ssh и доступ для записи в каталог журналов. Затем вы можете заключить команду script
в исполняемый файл set-group-id или sudo
.
Поправьте меня, если я ошибаюсь, но AFAIK, даже устройства CISCO имеют .bash_history файл. Когда вы входите в систему, все команды сохраняются там в порядке шкалы времени. Поэтому я не вижу смысла просить SSH-клиент сохранять каждую вводимую вами команду.