como renomear um arquivo remoto no linux com script

3

Eu gostaria de ter um script (bash) para renomear um arquivo em vários servidores Linux remotos alguma ideia de como fazer isso? obrigado.

    
por edotan 04.05.2011 / 21:21

3 respostas

7

Você pode usar o ssh para isso. Por exemplo:

for server in server1 server2 server3; do ssh $server mv oldfilename newfilename; done

Você pode querer ter uma lista de servidores armazenados em uma variável de ambiente:

export MYLISTOFSERVERS="server1
server2
server3
...
servern
"

e uma função (por exemplo) no seu bashrc (ou um script dedicado):

runforeachserver () {
for server in $MYLISTOFSERVERS; do
ssh $server "$@"
done
}

para que você possa chamá-lo sempre que quiser fazer tarefas para cada um dos seus servidores. Por exemplo, renomeie arquivos como você queria:

runforeachserver mv oldfilename newfilename

ou (apenas para mostrar a você como escapar do comando para passar pelo ssh):

runforeachserver date -d \"month ago\" +\"%Y-%m-%d\"
2011-04-04
2011-04-04
2011-04-04
2011-04-04
2011-04-04
2011-04-04

Obviamente, isso pode ser tão robusto quanto você desejar (habilitando arrays de servername / sshport), verificações de sintaxe, etc ...

    
por 04.05.2011 / 21:24
0

Embora não seja um script básico, você também pode tentar ClusterSSH . Isso ajudará você a executar o mesmo comando em vários servidores ao mesmo tempo.

    
por 04.05.2011 / 21:42
0

Você pode usar um perl de uma linha:

perl -lne 'system("/usr/bin/ssh -l username $_ command")' computers

em que computadores é um arquivo com um endereço IP em cada linha e o comando é o comando real que você deseja executar. (modifique o caminho para o seu binário ssh conforme necessário, por razões de segurança, use um caminho absoluto)

Você também deve configurar as chaves SSH. Você pode usar ssh-copy-id para isso, assim você não precisará inserir uma senha sempre que executar o script, para cada servidor.

ssh-keygen
ssh-copy-id username@hostname
    
por 04.05.2011 / 21:52