sábado, 25 de junho de 2011

Data e hora no history no Linux

Como às vezes (ou sempre) trabalhamos com mais de uma pessoa mexendo no mesmo servidor (ou servidores), e utilizando o mesmo login, ficamos sem saber o horário ou o dia que alguém digitou tal comando. Então eu costumo colocar no histórico do Linux a data e o horário que determinado comando foi digitado. Dessa forma, ao digitar o comando history, aparece a data, o horário e o comando que foi digitado.


Para fazer isso, adiciono a seguinte informação no final do /etc/bashrc:

export HISTTIMEFORMAT='%F %T '
Com isso, ao digitar o comando history, ele é mostrado da seguinte forma:

Servidor [root@servidor ~]# history
1  2011-04-06 10:20:46 service openvpn status

2  2011-04-06 10:20:53 ifconfig tun0
3  2011-04-06 10:21:04 ifconfig ppp0
4  2011-04-06 10:21:13 nmap localhost -p1194
...
...
998  2011-06-11 00:12:20 service squid reload
999  2011-06-11 00:12:29 vim /etc/rc.firewall
1000  2011-06-11 00:12:40 service firewall restart

Os comandos que foram digitados antes da definição da variável HISTTIMEFORMAT terão o horário mostrado a partir da próxima vez que for digitado history no console.
Modificar o HISTTIMEFORMAT não prejudica em nada caso queira procurar algum comando usando o CTRL + R. Ele continua funcionando da mesma forma que antes.

Informação bônus:

A palavra Servidor no exemplo acima está em vermelho. Isso foi feito de propósito, pois quero mostrar como costumo identificar os servidores que estou trabalhando. Isso é muito útil, pois a informação fica destacada e quando estamos mexendo em muitos terminais ao mesmo tempo, podemos acabar nos confundindo e digitar um comando em um servidor que era para ter sido no outro (já aconteceu comigo). Experimente, no início pode até parecer bobagem, mas com o tempo vai perceber o quanto é útil e facilitador.

Antes façam backup da variável PS1 para caso não gostem do resultado final:

echo $PS1 > variavel_ps1.bkp


Depois colocar no final do /etc/bashrc:
export PS1='\[\e[1;31m\]Servidor \[\e[0m\][\u@\h \W]\$ '
Caso não tenha gostado e queira retornar ao valor original, basta fazer dessa forma:

cat variavel_ps1.bkp

[\u@\h \W]\$
export PS1='[\u@\h \W]\$ '
Perceba que tem um espaço em branco depois do $ e o texto deve ficar entre aspas simples.

Abaixo uma imagem mostrando como fica: