作者mate99 (kkk)
看板Perl
標題[請益]怎麼用SCP備份多台設備資料並容錯?
時間Fri Jun 21 18:00:03 2013
我想要利用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