作者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
1F:→ scwg:用 eval { } 包起可能会出错的部份, 之後检查 $@ 06/21 20:15
2F:推 wangmj:23 行那边可以先 ping IP 有回应再往下 08/17 09:05
3F:→ wangmj:25行那边可以判断登入成功的文字样式,成功再往下 08/17 09:06