dil: (Default)
Wednesday, April 12th, 2017 12:56 pm

Как известно, список команд, запускаемых пользователем из командной строки, сохраняется bash’ем в файле ~/.bash_history . Но там они записываются просто в порядке запуска, а когда конкретно они запускались, неизвестно.

Внезапно обнаружилось, что информацию о времени запуска добавить очень просто, а она бывает очень полезна в процессе расследования всяких хаков и глюков.
Надо просто приделать к bash’у переменную HISTTIMEFORMAT – через /etc/profile, /etc/bash/bashrc, или персональные ~/.bashrc и ~/.profile:
export HISTTIMEFORMAT='%F %T '

Значение HISTTIMEFORMAT влияет только на формат вывода даты/времени при запуске history, его можно поменять в любой момент. Главное, чтоб при запуске bash’а эта переменная была хоть как-то определена, и тогда в .bash_history будут подписываться timestamp’ы:
#1491997427
cat .bashrc
#1491998079
tail .bash_history

и вот как посмотреть дату и время этих команд:
$ date -d '@1491997427'
Wed Apr 12 12:43:47 IST 2017
$ date -d '@1491998079'
Wed Apr 12 12:54:39 IST 2017

Оригинал этой записи в личном блоге.

dil: (Default)
Saturday, September 13th, 2014 06:28 pm

И не запускайте непонятные команды, а то они внезапно могут оказаться патчем Бармина.
ОСОБЕННО если там много смайликов. Вот, например, про эту непонятную команду меня предупреждали, что ничего хорошего не выйдет, но мне захотелось проверить самому:
:() { :|:& }; :

Проверил… Машина зависла намертво, только ресет помог. Так что если захотите попробовать самостоятельно, предварительно сохраните все открытые файлы и выключите остальные программы.

Оригинал этой записи в личном блоге.

dil: (Default)
Monday, April 26th, 2010 10:01 pm

Предположим, в силу исключительной криворукости вы умудрились в терминале привязать букву “e” к команде erase. И теперь при нажатии этой буквы у вас старается символ перед курсором. Соответственно, набрать stty sane или stty erase не представляется возможным.

Что делать?? Шелл пусть для определённости будет bash.
Один из вариантов отгадки под катом.

Read the rest of this entry » )

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

dil: (Default)
Thursday, March 1st, 2007 05:38 pm
my $cmd = "$SSH $USER\@$log->{'host'} "
    ."\"perl -e '\\\$F=\\\"$log->{'file'}\\\"; \\\$M=(stat(\\\$F))[9]; "
    ."if(!defined(\\\$M)){print \\\"\\\$F not found\\n\\\";} "
    ."elsif(\\\$M < $log->{'lastrun'}){print \\\"\\\$F is stale\\n\\\";} "
    ;
  if(defined($log->{'regexp'})) {
    $cmd .= " else {system(\\\"grep '\\\"'\\\"'$log->{'regexp'}'\\\"'\\\"' \\\$F\\\");} ";
  }
  $cmd .= "'\"" ;