Ubuntu 20.04 на виртуальной машине Hyper-V
Я пытаюсь сделать что-то похожее на то, что написано в в этом ответе . Я думаю, что этот ответ записывает все терминалы в определенный файл. Я хотел бы иметь возможность регистрировать все мои терминалы ввода / вывода по дням, если это возможно. Итак, когда я хочу узнать, что я делал в какой-то конкретный день, я могу зайти в файл журнала этих дней и прочитать ввод / вывод моего терминала.
Я не знаю, можно ли установить программное обеспечение на сервер, но ZSH - это FISH, альтернатива оболочке BASH. , храните метки времени в файлах истории для каждой команды. В ZSH сохраняется для каждой строки, а FISH использует две строки для каждой команды. Оба используют Unix Time Stamp. ЗШ : 1591635588: 0; ssh пользователь @ сервер ls / tmp рыбы 989 - cmd: ssh user @ server ls / tmp 990 когда: 1591387835
Я использую ZSH с установленным oh-my-zsh вместо bash. В файле истории ZSH (~ / .zsh_history) каждая команда (строка) хранится как bash, но в начале ставится временная метка Linux на момент запуска этой команды. Чтобы сохранить историю на стороне клиента, вы можете запустить команду через ssh:
$~> ssh user@server ls /tmp
$~> ssh user@server cat /etc/os-release
В ZSH она хранится примерно так:
$~> cat ~/.zsh_history
: 1591635588:0;ssh user@server ls /tmp
: 1591636831:0;ssh user@server cat /etc/os-release
Если вы запускаете AWK для файла, вы можете перевести временные метки:
$~> awk -F":" '{print strftime("%Y-%m-%d %H\:%M\:%S", $2),$3}' ~/.zsh_history
2020-06-08 14:49:10 0;ssh user@server ls /tmp
2020-06-08 14:50:04 0;ssh user@server cat /etc/os-release
Вы можно фильтровать по дате, используя вместе с grep, например, и отправить его в файл:
$~> awk -F":" '{print strftime("%Y-%m-%d %H:%M:%S", $2),$3}' ~/.zsh_history \
| grep -E "2020-06-08" > ${HOME}/2020-06-08-history.log