В настоящее время я ищу решение для выполнения удаленных команд на нескольких локальных серверах из входного файла, содержащего «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", но не знаю, как я могу применить эту утилиту для своих нужд.

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

Спасибо

1 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .