Copie todos os usuários '.bash_history de uma só vez

1

É possível usar o cp para copiar o arquivo .bash_history de cada usuário para a mesma pasta (com o nome de usuário anexado)?

Ou é possível, pelo menos, copiá-los em um conjunto paralelo de pastas? Eu não consigo descobrir isso.

Eu tenho acesso root.

    
por user1399747 02.04.2013 / 21:10

3 respostas

3

tl; dr; for a in /home/* ; do cp $a/.bash_history /tmp/$a.bash_history ; done

Versão mais longa:

para um padrão em loops sobre todos os itens em um padrão.
O padrão em si é armazenado na variável chamada a .

Exemplos:% de todos os nomes de arquivos de for a in * ; do echo $a ; done echo.
for a in /home/* ; do echo $a ; done echo são os nomes de todos os homedirs em / home.

Em vez de echo usamos o comando copy. (cp)

Como não queremos substituir todos os arquivos, precisamos alterar o nome do destino ou precisamos concatená-los em um único arquivo.

.bash_history

Para copiar, usamos cp $ a / tmp / $ a_file (todos os arquivos agora são nomeados de forma diferente.

Para concatenar, podemos usar o gato com o acréscimo ao redirecionamento.
for a in /home/* ; do cat $a/.bash_history >> /tmp/all-users_bash_history ; done

    
por 02.04.2013 / 21:15
2

Lembre-se de que essa NÃO é uma maneira totalmente à prova de erros de copiar a atividade de um usuário. Isso ocorre porque há opções que o usuário pode facilmente invocar para não colocar coisas no arquivo de histórico. Então, eu não contaria com isso como qualquer tipo de mecanismo de auditoria.

Além disso, como usuário root, espionar o arquivo de outro usuário, a menos que haja motivos específicos e válidos para isso, é um pouco suspeito. Falta um pouco de integridade aqui, a menos que você diga a eles que você vai fazer isso.

    
por 02.04.2013 / 21:59
0

Se você está procurando algo em particular, você pode usar:

grep -e "stuff goes here" /home/*/.bash_history

Fonte

    
por 02.04.2013 / 21:20