Как автоматически ssh кластерные серверы и запускают команду там, чтобы получить некоторую информацию?

Простой вопрос, скажем, я хочу ssh на кластерные машины и отслеживать некоторую информацию о каждом из них. В частности, я хочу запустить nvidia-smi для каждого из них, чтобы узнать их использование в GPU. Я попытался:

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

, но он только входит в систему machine1, а затем просто остановился. Только после выхода machine1 выполняется nvidia-smi, но на локальном терминале, а не на machine1. Затем он входит в machine2 и останавливается там ...

1
задан 3 January 2018 в 13:22

3 ответа

Поместите команду, которую вы хотите выполнить, на линии ssh:

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

Возможно, вам потребуется указать полный путь к nvidia-smi.

Кроме того, чем жесткий код вашего списка серверов в этот скрипт (и другие похожие сценарии), сохраните список в файле:

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

И измените строку for на:

[ f3]

Затем, когда изменяется «список серверов», вам нужно изменить только одно место, а не каждый скрипт.

2
ответ дан 22 May 2018 в 15:48

Поместите команду, которую вы хотите выполнить, на линии ssh:

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

Возможно, вам потребуется указать полный путь к nvidia-smi.

Кроме того, чем жесткий код вашего списка серверов в этот скрипт (и другие похожие сценарии), сохраните список в файле:

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

И измените строку for на:

for host in $(cat Servers.txt)

Затем, когда изменяется «список серверов», вам нужно изменить только одно место, а не каждый скрипт.

2
ответ дан 18 July 2018 в 00:00

Поместите команду, которую вы хотите выполнить, на линии ssh:

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

Возможно, вам потребуется указать полный путь к nvidia-smi.

Кроме того, чем жесткий код вашего списка серверов в этот скрипт (и другие похожие сценарии), сохраните список в файле:

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

И измените строку for на:

for host in $(cat Servers.txt)

Затем, когда изменяется «список серверов», вам нужно изменить только одно место, а не каждый скрипт.

2
ответ дан 24 July 2018 в 17:08

Другие вопросы по тегам:

Похожие вопросы: