Crie o shell script para o ssh dentro do host remoto e execute o ping desse host

1

Eu quero ssh em um host remoto e pingar outro IP desse host. No entanto, com o script a seguir, só posso ssh nesse host.

#!/bin/sh

sshpass -p <password> ssh -t -o StrictHostKeyChecking=no <username>@<remote host>
/usr/sbin/ping <some IP>

Depois de existir a partir do host remoto (de volta ao meu host de origem), o ping é iniciado.

Em outras palavras, quando meu script é executado, uma conexão ssh é feita em um host remoto. O ping não ocorre nesse host remoto. Quando saio manualmente do host remoto, o ping é iniciado novamente (do host original).

Como faço para que o ping comece a partir do host remoto em vez do host de origem?

    
por amadeus 08.06.2018 / 11:48

2 respostas

6

ssh recebe um comando para ser executado na máquina remota como seu argumento, por exemplo

ssh user@host ping ip-addr

Isso executará ping ip-addr na máquina remota e terminará a conexão.

Quando você coloca o comando ping na próxima linha, como em

ssh user@host
ping ip-addr

ssh irá, por padrão, iniciar um shell interativo na máquina remota. Quando esse shell é finalizado, o controle é devolvido ao seu script e o comando ping é executado localmente.

    
por 08.06.2018 / 12:18
1

use aspas simples para os comandos se você deseja executar em uma máquina remota através de ssh . será útil para executar vários comandos também.

#!/bin/sh

sshpass -p <password> ssh -t -o StrictHostKeyChecking=no <username>@<remote host> '
/usr/sbin/ping <some IP>'
    
por 08.06.2018 / 12:25