Выполнить SSH удаленного cmd exec на нескольких локальных серверах с ввода (sshpass?)

0

В настоящее время я ищу решение для выполнения удаленных команд на нескольких локальных серверах из входного файла, содержащего «user: password» в следующем формате:

jboss5:manager:192.168.1.101
database1:db01:192.168.20.6
server8:localnet:192.168.31.83
x:z:192.168.1.151
test:mynet:192.168.35.44
.... and others

Некоторые команды, которые я хочу выполнить удаленно:

cd $HOME; ./start_script.sh; wget 192.168.1.110/monitor.sh; chmod +x monitor.sh; ./monitor.sh

Я знаю, что есть утилита под названием «sshpass», но не знаю, как я могу применить эту утилиту для своих нужд.

Я открыт для любых идей, чтобы удовлетворить мою потребность, любая помощь будет очень признательна!

Спасибо

Джон Доу
источник
Привет, так как вы ищете выполнение удаленных команд на нескольких серверах, вас может заинтересовать Rex ( см . Rexify.org ).
Эдвард

Ответы:

0

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

#!/bin/sh

hosts='
jboss5:manager:192.168.1.101
database1:db01:192.168.20.6
server8:localnet:192.168.31.83
x:z:192.168.1.151
test:mynet:192.168.35.44
'

for acct in ${hosts}; do
  user=$(echo "${acct}" | awk -F: '{print $1}')
  pass=$(echo "${acct}" | awk -F: '{print $2}')
  host=$(echo "${acct}" | awk -F: '{print $3}')

  sshpass -p "${pass}" ssh "${user}@${host}" \
    'cd $HOME; ./start_script.sh; wget 192.168.1.110/monitor.sh; chmod +x monitor.sh; ./monitor.sh'
done
Alex
источник
Это круто! Именно то, что я искал. Спасибо, что нашли время записать это, очень признателен :)
Джон Доу
@JohnDoe рад помочь. Подумайте о том, чтобы в будущем перейти на аутентификацию с открытым ключом или, по крайней мере, использовать какое-либо решение для защиты от взлома, например, fail2banна серверах и не по умолчанию SSH-порт (22), действительно опасно использовать простые пароли, если серверы подключены к дикому Интернету.
Алекс