Executa remotamente um comando em um ssh-server com um script O

5

Eu quero executar um comando em um servidor ssh, mas esse comando é determinado por um script na minha máquina local. Como eu faço isso?

Um exemplo de clareza:
Eu quero escrever um script aqui ( foo.sh ) que leva um argumento. Se eu executar ./foo.sh 0 , ele deve enviar um sinal de desligamento para a máquina do servidor, mas se eu executar ./foo.sh 1 , ele deve enviar um sinal de reinicialização.

Eu sei como fazer o login manualmente via ssh, e eu já configurei o ssh-keys para pular senhas, mas não sei como automatizar o procedimento com um script.

    
por Malabarba 03.12.2010 / 16:25

2 respostas

5

Como Oli comentou, você pode dizer ao SSH para enviar comandos. Você pode modificar seu script para que, se sua linha de comando arg for 1, ele envie ssh user@server "shutdown -h now" . Tenha em mente que você terá que ser superusuário na outra máquina para desligá-lo.

EDITAR : Em vez de usar root, como é sugerido nos comentários, coloque user no arquivo sudoers como sendo capaz de desligar a máquina sem uma senha.

    
por Nick Pascucci 03.12.2010 / 16:38
7

Você pode passar um comando (ou lista de comandos, separados por ; ) para uma conexão SSH como esta:

ssh user@server-address "./foo 1"

Se você tiver um script local que produza 0 ou 1 , você pode simplificar ainda mais:

ssh user@server-address "./foo '/path/to/your/script'"

O código nos backticks é executado antes de qualquer outra coisa e sua saída é colocada na linha dinamicamente.

    
por Oli 03.12.2010 / 16:33