Странствую, как старец по форумам в поисках смысла.
Есть задача, выполнить небольшой скрипт, используя 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. Файл со скриптом, который необходимо выполнить, данный скрипт пытается увидеть уже на удаленной машине, вместо того что бы взять его с машины источника соединения.