В основном я хочу получить запись всех команд, выполненных на моем ssh-сервере, с указанием их времени. Коды, которые я пробовал:

ssh user@ip 'export HISTFILE=~/.bash_history; set -o history; history'

Я получил все команды, но я не получаю отметки времени с этим, что, как я думаю, ожидается.

Когда я впервые захожу, а затем использую команду истории, я получаю все детали, включая дату и время. Я хотел бы получить все детали, когда я использую команду истории с SSH. Как я должен идти об этом? О, да, и, если возможно, я хотел бы получить историю без необходимости экспортировать HISTFILE.(ЕСЛИ ВОЗМОЖНО)Установка пакетов не вариант.

2 ответа2

1

Две вещи:

  1. Вы также должны экспортировать, например,

    HISTTIMEFORMAT='%F %T '
    

    установить время отображения истории команд.

  2. Если вы не установили переменную среды HISTTIMEFORMAT при использовании сеанса, время команды не будет сохранено, и вы, конечно, не сможете их увидеть. По умолчанию текущее время будет напечатано как время команды для каждой команды, в которой отсутствует индикатор времени.

Если вы посмотрите файл ~/.bash_history то увидите, активированы ли у вас отметки времени для сеансов. Каждая вторая строка будет начинаться с символа # за которым следует время начала следующей команды.

0

Если вы знаете, что оболочка - это bash а файл истории - .bash_history достаточно простой выборки.

scp user@ip:.bash_history .

Для данных времени,

  • Файл .bash_history будет содержать информацию о времени из данных истории всех сеансов, которые были запущены с настроенным HISTTIMEFORMAT
  • Я думаю, что обновление истории будет содержать метки времени для всего сеанса, который имел конфигурацию HISTTIMEFORMAT в любое время в нем
  • Что приводит нас к небольшому ограничению
    • если у вас есть bash profile для этих удаленных пользовательских входов в систему с
      export HISTTIMEFORMAT='some format' , вам просто нужно потянуть файл .bash_history
    • в противном случае, выполнение команды удаленной истории в любой форме не даст вам данных о времени - просто потому, что они не хранятся (в .bash_history) в первую очередь; он теряется в конце каждого сеанса и сохраняется только список команд

Надеюсь, что последний пункт проясняет целесообразность получения данных о времени.
Хорошей новостью является то, что при входе в систему вы можете видеть данные о времени для прошлых сеансов, они настроены и вам не нужно никаких изменений. Если нет, это просто вопрос вставки export в используемый bash profile - никаких установок не требуется.

PS: Я полагаю, что если ваш вопрос сфокусирован на оболочке bash , вы добавите его в качестве тега.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .