Как автоматически 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 в 12:22

1 ответ

Поместите команду, которую вы хотите выполнить, в строку 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
ответ дан 3 January 2018 в 12:22
  • 1
    Ага, я должен был установить gconf-редактора. – Ted Mielczarek 31 July 2012 в 19:04
  • 2
    Ага, я должен был установить gconf-редактора. – Ted Mielczarek 31 July 2012 в 19:04

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

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