看板 Perl 關於我們 聯絡資訊
我想要利用perl 對遠端設備作設定備份的動作 現在遇到一個問題,在執行foreach時 就是當有一個ip不存在或帳號密碼錯誤程式就會中斷,請問是甚麼問題或者說可以怎麼改 寫? 可以在程式執行時略過錯誤的發生並生成錯誤訊息嗎? 程式執行會發生如下的錯誤訊息: ----------------------------------------------------------------------------------- 12.17.1.73 192.168.40.1 scp timed out while trying to connect to 192.83.167.253 at config_backup line 25 ------------------------------------------------------------------------------------ 12.17.1.73 這個ip存在且帳號密碼正確所以檔案有拉過來 192.168.40.1 這個ip不存在所以會不成功 但是後面的ip就不會執行scp的動作了 程式碼如下 ---------------------------------------------------------------- 1 2 #!/usr/bin/perl -w 3 4 use warnings; 5 #use strict; 6 use Net::SCP::Expect; 7 $user="asd"; 8 $password="1qaz4rfgt"; 9 my $date = `date +%Y%m%d`; 10 chomp($date); 11 mkdir ("/home/fortigate/".$date); 12 13 @firewallips = ('12.17.1.73', 14 '192.168.40.1', 15 '10.11.20.1', 16 '172.16.1.1', 17 '172.16.10.1', 18 ); 19 20 foreach $ip (@firewallips) { 21 print "$ip\n"; 22 23 my $scpe = Net::SCP::Expect->new(auto_yes=>1,port=>22,verbose=>1,no_check=>1); 24 $scpe->login($user, $password); 25 $scpe->scp("$ip:sys_config","/home/fortigate/" . $date . "/fortigate-$ip\.conf"); 26 } --------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.195.5
scwg:用 eval { } 包起可能會出錯的部份, 之後檢查 $@ 06/21 20:15
wangmj:23 行那邊可以先 ping IP 有回應再往下 08/17 09:05
wangmj:25行那邊可以判斷登入成功的文字樣式,成功再往下 08/17 09:06