当批量远程执行任务时如何判断任务执行是否成功,以及错误信息呢?
最简单是方法是在设定执行完一个任务后输出服务器ip,然后根据输出信息来判断
1 2 3 4 5 6 |
task "task", group => "all",sub { ... say connection->server; }; |
1 |
rex -qw task 1>info.txt 2>error.txt |
这样根据inofo.txt输出信息就能判断执行成功的,服务器。而执行失败的情况则可以通过
error.txt来获得,比如远程连接有问题的和连接账号有问题的信息(0.55版本,最新版本错误提示
有问题,无法区别出来了)。这两类典型的信息输出为:
1 2 3 4 |
ESC[0mESC[33m[2015-12-01 11:26:05] WARN - Error running task/batch: Wrong username/password or wrong key on 192.168.1.2. at /usr/local/share/perl5/Rex/TaskList/Base.pm line 245. ESC[0mESC[33m[2015-12-01 11:26:07] WARN - Can't connect to 10.16.194.18 ESC[0mESC[33m[2015-12-01 11:26:07] WARN - Error running task/batch: Couldn't connect to 10.16.194.18. at /usr/local/share/perl5/Rex/TaskList/Base.pm line 245. |
用两个单行命令就能到相关信息,首先是无法连接的服务器(可能网络有问题、防火墙限制或者端口设置错误了)。
1 |
perl -lane '/Can/ and print $F[-1]' error.txt |
然后是用户名密码错误的服务器
1 |
perl -lane '/Wrong/ and $F[-5]=~s/.$// and print $F[-5]' error.txt |