Выполнить 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

Это круто! Именно то, что я искал. Спасибо, что нашли время записать это, очень признателен :)
Джон Доу

@JohnDoe рад помочь. Подумайте о том, чтобы в будущем перейти на аутентификацию с открытым ключом или, по крайней мере, использовать какое-либо решение для защиты от взлома, например, fail2banна серверах и не по умолчанию SSH-порт (22), действительно опасно использовать простые пароли, если серверы подключены к дикому Интернету.
Алекс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.