如何将expect脚本转换为perl scprit?

时间:2017-06-15 01:44:11

标签: perl tcl expect expect.pm

我之前从未使用过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;
}

非常感谢!

1 个答案:

答案 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模块。