2017-06-15 66 views
-4

我从来不使用perl脚本。我已经完成了期望的脚本,有什么办法将它转换为Perl?如何将expect脚本转换为perl scprit?

我正在尝试学习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

Stackoverflow不是代码编写/翻译服务。 – Brandin

回答

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

+0

非常感谢你!但我已经转换为Perl脚本。我会说Perl脚本并不难。无论如何,感谢那些信息。 –