Як я віддалено виконую сценарії на декількох серверах, змішую вихід


1

Привіт, я шукаю програмне забезпечення або якусь техніку, яка б дозволила мені зробити наступне в одному вікні терміналу:

  • Візьміть як вхід список машин з підтримкою ssh з інформацією про вхід, пароль та шлях сценарію, приблизно так:

    login:pass@192.168.1.1/path/to/script/run.sh login:pass@192.168.1.2/path/to/script/run.sh

  • Відкрийте ssh-з'єднання з цими машинами та запустіть вказані сценарії віддалено.

  • Вихід з усіх сценаріїв повинен бути переданий у моє місцеве вікно.
  • Коли я надсилаю сигнал на зразок Ctrl-C, я хочу вбити віддалені сценарії, а потім з'єднання. Величезний плюс був би, якщо моя машина вийде з ладу, віддалені сценарії також будуть вбиті.

Плюсом було б, якби я міг використовувати це в терміналі Cygwin, оскільки саме це я використовую, але я відкритий до всього, що могло б це зробити.

Відповіді:


0

Я припускаю, що ви використовуєте OpenSSH. Навмисно важко програматично дати пароль на ssh, оскільки це, як правило, погана ідея. Замість використання паролів ви можете використовувати автентифікацію відкритих ключів ? Якщо так, то слід зробити трюк:

for cmd in login@192.168.1.1:/path/to/script/run.sh login@192.168.1.2:/path/to/script/run.sh; do
    ssh ${cmd%%:*} ${cmd#*:}
done


0

Вам знадобиться аутентифікація відкритого ключа, вам також знадобиться щось на зразок PSSH, який є інструментом на основі пітона для запуску декількох паралельних сеансів ssh.

https://code.google.com/p/parallel-ssh/


0

Якщо ви можете написати Perl, слід перевірити Net :: OpenSSH :: Parallel .

Він може увійти до віддалених хостів за допомогою автентифікації відкритого ключа або пароля та паралельно виконувати запрограмовані завдання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.