[請益]怎麼用SCP備份多台設備資料並容錯?

看板Perl作者 (kkk)時間12年前 (2013/06/21 18:00), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
我想要利用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

06/21 20:15, , 1F
用 eval { } 包起可能會出錯的部份, 之後檢查 $@
06/21 20:15, 1F

08/17 09:05, , 2F
23 行那邊可以先 ping IP 有回應再往下
08/17 09:05, 2F

08/17 09:06, , 3F
25行那邊可以判斷登入成功的文字樣式,成功再往下
08/17 09:06, 3F
文章代碼(AID): #1Hn2Gbsr (Perl)
文章代碼(AID): #1Hn2Gbsr (Perl)