Запрашивать задания из грязного потока через вложенные SSH-соединения - PullRequest
0 голосов
/ 07 мая 2019

Я часто выполняю задания в нескольких разных кластерах и хотел бы проверить состояние моих заданий SLURM и SGE с помощью небольшого bash-скрипта.

Я могу сделать это для большинства кластеров с помощью

printf "\n Jobs on Cluster X \n \n"
ssh user@clusterXname bash -c "'
squeue -u user
exit
'"
printf "\n"

. Это дает мне такой вывод.

Задания на AXON

         JOBID PARTITION     NAME     USER ST  TIME  NODES NODELIST(REASON)
         17251 gpu   CL21E1 user  R    4:38:15      1 gpu02-02
         17252 gpu   CL21E2 user  R    4:37:06      1 gpu02-03
         17253 gpu   CL21E3 user  R    4:36:27      1 gpu04-03
         17254 gpu   CL21E4 user  R    4:35:23      1 gpu04-04
         17255 gpu   CL21E5 user  R    4:34:46      1 gpu04-05

Тем не менее, один сервер имеет вложенное соединение SSH, поэтому я должен SSH от одного сервера к другому.

Я попытался вложить указанный выше код с помощью

printf "\n Jobs on Cluster Y \n \n"
ssh user@clusterXname bash -c "'
ssh user@clusterYname bash -c '"
squeue -u user
exit
"'
exit
'"
printf "\n"

Это дало мне команду, не найденную для squeue.

Я также попытался поместить внутреннюю команду в скриптна «внешнем» сервере и запустил

printf "\n Jobs on Cluster X \n \n"
ssh user@clusterXname bash -c "'
bash job script.sh
exit
'"
printf "\n"

В этом случае я получил «Псевдо-терминал не будет выделен, потому что stdin не является терминалом».Если я сделаю ssh -t вместо ssh, я получу желаемый результат, но мне нужно выйти из соединения ssh.

Итак, что я ищу, так это вывод выше для моего вложенного ssh-соединения без необходимости вручную выходить из сервера.

Большое спасибо заранее за вашу помощь и извинения, если я пропустилответ на мой вопрос!

1 Ответ

1 голос
/ 07 мая 2019

У меня сработало следующее (при условии, что у вас есть ключи от ssh к clusterY без пароля на clusterX):

printf "\n Jobs on Cluster Y \n \n"
echo "echo 'squeue -u user' | ssh user@clusterYname"  | ssh user@clusterXname
printf "\n"

Я никогда не пробовал bash -c с ssh, но передача команд в виде строк всегда работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...