我之前从未使用过perl脚本。我已经完成了期望脚本,有没有办法将其转换为perl?
我正在尝试学习perl脚本。 任何想法都可以帮助!
foreach addr $addr {
if {$addr eq {}} continue;
set timeout 180
match_max 1000000
spawn telnet $addr
expect {
"*timed out*" {puts "Host not responding"; continue}
"'^]'." {sleep .1}
}
expect "*login*" {send "$user\r"}
expect "*assword:*" {send "$pass\r"}
expect {
"Login incorrect" {puts "Bad Password or User"; exit}
-re {[#>] ?$} {send "page-off\r"}
}
log_file $customer\-License-$date.log
expect -re {[#>] ?$}
send "show clock\r"
sleep .5
expect -re {[#>] ?$}
send "show docsis channel utilization\r"
sleep .5
expect -re {[#>] ?$}
send "show clock\r"
sleep .5
expect -re {[#>] ?$}
sleep .5
send -- "\r\rexit\r"
send "\r"
puts "Connection closed, connecting to next chassis\r"
sleep 1
log_file
expect eof;
}
非常感谢!
答案 0 :(得分:0)
system('expect', '-f', <<'__EOS__');
foreach addr $addr {
if {$addr eq {}} continue;
set timeout 180
match_max 1000000
spawn telnet $addr
expect {
"*timed out*" {puts "Host not responding"; continue}
"'^]'." {sleep .1}
}
expect "*login*" {send "$user\r"}
expect "*assword:*" {send "$pass\r"}
expect {
"Login incorrect" {puts "Bad Password or User"; exit}
-re {[#>] ?$} {send "page-off\r"}
}
log_file $customer\-License-$date.log
expect -re {[#>] ?$}
send "show clock\r"
sleep .5
expect -re {[#>] ?$}
send "show docsis channel utilization\r"
sleep .5
expect -re {[#>] ?$}
send "show clock\r"
sleep .5
expect -re {[#>] ?$}
sleep .5
send -- "\r\rexit\r"
send "\r"
puts "Connection closed, connecting to next chassis\r"
sleep 1
log_file
expect eof;
}
__EOS__
或者,有Expect模块。