/ / Bash script para se conectar a um servidor remoto, e puxe a última vez que um arquivo foi modificado - linux, bash, shell

Bash script para se conectar a um servidor remoto, e puxar a última vez que um arquivo foi modificado - linux, bash, shell

Eu estou olhando para criar um script bash para consultar um servidor remoto para a última vez que cada instância de um arquivo foi modificado. Cada diretório inicial possui uma versão deste arquivo.

Por exemplo, ambos owner e owner1 ter uma cópia do foo.txt em seus diretórios home em uma caixa remota acessível via ssh.

/home/owner/
-rw-r--r--  1 owner owner   3368 Jul  29  2014 foo.txt

/home/owner1/
-rw-r--r--  1 owner1 owner1   3368 Jul  28  2014 foo.txt

Eu gostaria de enviar essas informações para um arquivo que se parecesse com:

User: owner  Last Modified: Jul 29 2014
User: owner1  Last Modified: Jul 28 2014

Respostas:

2 para resposta № 1

Você deveria ao menos mostrar que tentou escrever o roteiro sozinho. De qualquer forma, é apenas um one-liner, então por que discutir?

ssh remote-box "ls -l /home/*/foo.txt"

Não é precisamente o formato que você sugeriu, mas tem toda a informação que você pediu.


0 para resposta № 2
echo owner: `ssh owner@remote-box "date -r foo.txt"`>output.txt
echo owner1: `ssh owner1@remote-box "date -r foo.txt"`>>output.txt

0 para resposta № 3

A seguinte função irá imprimir os dados que você está procurando:

remote_mod() {
ssh $1 ls -l $2 | awk "{ print "User: "$3"  Last Modified: "$6" "$7" "$8 }"
}

Isso imprime algo como:

$ remote_mod yourmachine "~/.bashrc"
User: root  Last Modified: Jun 2 15:01

Você pode fazer isso em um loop se quiser executar o comando em vários arquivos remotos:

for d in owner owner1
do
remote_mod yourmachine /home/$d/foo.txt
done

o stat comando lhe dará ainda mais informações, mas está em um formato mais detalhado.


0 para a resposta № 4

Aqui vai, talvez não exatamente a saída que você quer, mas eu tenho certeza que você será capaz de modificar o script para atender às suas necessidades. Certifique-se de que o usuário com acesso de leitura tenha acesso aos diretórios iniciais.

ssh HOSTNAME "find /home/  -maxdepth 2 -name foo.txt | xargs -l -I{} bash -c "{
DIR=$(dirname {});
LAST=$(stat -c %y {});
echo "Dir:${DIR} Last Modified :${LAST}"
}""

Se o proprietário do arquivo é o "usuário" que você deseja imprimir, você pode simplificar com:

ssh HOSTNAME "find /home/  -maxdepth 2 -name foo.txt | xargs -l -I{} bash -c "{
stat -c "User: %U Last Modified : %y" {};
}""