Como automaticamente ssh para servidores de cluster e executar o comando lá para obter alguma informação?

1

Uma pergunta simples, digamos que eu queira fazer o ssh para agrupar máquinas e monitorar algumas informações de cada uma delas. Especificamente, quero executar nvidia-smi em cada um deles para saber o uso da GPU deles. Eu tentei:

for host in machine1 machine2 machine3
 do 
    ssh "$host" 
    nvidia-smi 
 done

mas ele efetua login apenas em machine1 e, em seguida, parou apenas lá. Somente depois que eu sair do machine1 , nvidia-smi será executado, mas no terminal local, não no machine1 . Então ele entra no machine2 e pára aí ...

    
por K.Wanter 03.01.2018 / 02:23

1 resposta

2

Coloque o comando que você deseja executar na linha ssh :

for host in machine1 machine2 machine3
 do 
        ssh "$host" nvidia-smi 
 done

Você pode precisar especificar o caminho completo de nvidia-smi .

Além disso, em vez de codificar sua lista de servidores nesse script (e outros scripts semelhantes), mantenha a lista em um arquivo:

cat >Servers.txt <<EOF
machine1
machine2
machine3
EOF

Altere a linha for para:

for host in $(cat Servers.txt) 

Depois, quando a "lista de servidores" for alterada, você só precisará alterar UM lugar, não todo script.

    
por waltinator 03.01.2018 / 02:26