Приветствую,
Есть expect-скрипт, вызываемый из баш-скрипта. Expect делает spawn удаленной ssh-сессии и выполняет удаленную команду. Мне необходимо получить результат выполнения той команды, т.е. то что возвращается по «exit $?».
Вот сами скриптики и некоторый костыль, который делает то что мне нужно, но IMHO должно быть более красивое решение и кроме того, я бы хотел обрабатывать exit code в шелл-скрипте:
# !/bin/sh
expect -f remote.exp 192.168.1.100 user pass 10.10.10.1
#!/usr/bin/expect
set timeout 20
set box [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
set target [lindex $argv 3]
spawn ssh -l $user $box
expect "*password:"
send "$password\r\n"
expect "*#"
send "ping -c1 $target\r\n"
expect "*#"
send "echo $?\r"
expect {
"0\r" { puts "Test passed."; }
timeout { puts "Test failed."; }
}
expect "*#"
Буду признатален за советы! Спасибо.