2
#! /bin/expect
set timeout 20
set user [lindex $argv 0]
set password [lindex $argv 1]
set prompt "$ " ;# -- main activity
proc dostuff { currenthost} {
;# do something with currenthost
send -- "ls -lrt\r" return} ;# -- start of task
set fd [open ./hostlist r]
set hosts [read -nonewline $fd]
close $fd
foreach host [split $hosts "\n" ] {
spawn /usr/bin/ssh [email protected]$host
while (1) {
expect {
"no)? " {
send -- "yes\r"
}
"password: " {
send -- "$password\r"
}
"$prompt" {
dostuff { $host }
break
}
}
}
expect "$prompt"
send -- "exit\r"
}
expect eof
Я просмотрел this кода в Интернете, но он будет считывать данные, если он arragnged в 2 колонки, как.как я могу прочитать данные из файла в сценарий ожидать
HOST TFTP_SERVER_ADDRESS
xx XXYY
aa AABB
... ...
... ....
и так далее
Я хотел бы назначить каждому TFTP_SERVER_ADDRESS переменной и использовать его в моем сценарии.
Кроме того, эта часть кода безопасного:
# grab the password
stty -echo
send_user -- "Password for [email protected]$host: "
expect_user -re "(.*)\n"
send_user "\n"
stty echo
set pass $expect_out(1,string)
#... later
send -- "$pass\r"
Да спасибо !! Идеально! – Jey10