Como usar o SSH para executar um script shell em uma máquina remota?

Tenho que executar um script shell (windows/Linux) em uma máquina remota.

Tenho o SSH configurado tanto na máquina A quanto na B. Meu script está na máquina A que executará parte do meu código em uma máquina remota, a máquina B.

Os computadores locais e remotos podem ser baseados no sistema Windows ou Unix.

Há alguma maneira de fazer isto usando plink/ssh?

$ ssh user@hostB "ls -la"

Isso irá solicitar a sua senha, a menos que você tenha copiado a chave pública do seu usuário hostA para o arquivo authorized_keys no diretório home do .ssh do usuário. Isso permitirá a autenticação sem senha (se aceita como um método auth na configuração do servidor ssh).

Comentários (3)

Assumindo que você queira fazer isso automaticamente a partir de uma máquina "local", sem entrar manualmente na máquina "remota", você deve olhar para uma extensão TCL conhecida como Expect, ela é projetada precisamente para este tipo de situação. Eu também forneci um link para um script para logar/interagir via SSH.

https://www.nist.gov/services-resources/software/expect

http://bash.cyberciti.biz/security/expect-ssh-login-script/

Comentários (0)

Primeiro, copie o script para a máquina B usando o scp

[user@machineA]$ scp /caminho/para/script user@machineB:/home/utilizador/caminho

Então, basta executar o roteiro

[user@machineA]$ ssh user@machineB "/home/user/path/script"

Isto funcionará se você tiver dado permissão para executar o script.

Comentários (6)