LINUX.ORG.RU

Сообщения ragnatulagan

 

Выполнение локального скрипта на удаленной машине средствами Expect, Bash, SSH - Bash

Странствую, как старец по форумам в поисках смысла.

Есть задача, выполнить небольшой скрипт, используя expect, на удаленных машинах. Соединение ssh с машинами проходит средствами expect в автоматическом режиме. Какой командой заставить expect исполнить скрипт на удаленной машине? Сам скрипт должен находится на машине с которой идем по ssh.

Суть в том, что при помощи nmap создается список ip-адресов и циклом идет соединение с ними. Соединился, запустил скрипт, отсоединился и т.д. пока не закончится список.

expect_enter()
{
     cat <<EOF
        set timeout 10
        spawn ssh -t root@${IP[$i-1]} \'bash -s\' < /usr/sbin/repo_add
        expect "(yes/no)?*" {send "yes\r"}
        expect "* password:" {send "$PASSW\r"}
        expect "#"       
EOF
}
 
echo "Выполняется обновление хостов"
          for ((i=1; i <= IPL; i ++))
             do
              expect -c "$(expect_enter)"
          done

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

 , ,

ragnatulagan
()

RSS подписка на новые темы