我必须创建一个脚本,将wget联系人消息发送到我们网络上的所有设备。 wget连接到url,这会触发端点与服务器联系。
我遇到的问题是我需要能够将命令发送到网络上的每个IP地址,如果连接成功,请注意30秒,然后转到列表中的下一个URL。但是,如果连接不成功,我希望脚本继续移动到下一个URL而不会暂停。
目前我正在使用bash脚本发送命令,其中url为暂停= 30,连接尝试设置为1,超时设置为1.这对于成功的连接是正常的,但它也是挂在不是的地址上。
有关如何暂停成功并在死亡地址之后继续前进的任何建议吗?
这是我目前正在运行的命令,
wget --connect-timeout = 1 --tries = 1 http://xx.xx.xx.xx:8085/contact_dls.html/ContactDLS
睡30年
wget --connect-timeout = 1 --tries = 1 http://xx.xx.xx.xx:8085/contact_dls.html/ContactDLS
等等等
感谢
答案 0 :(得分:1)
您不需要执行此任务 - 一切都可以在Perl中完成。
只需使用以下代码:
use LWP::UserAgent;
use HTTP::Request;
my $ua = new LWP::UserAgent;
$ua->timeout(1);
my $req = new HTTP::Request(GET => $url);
my $res = $ua->request($req);
if ($res->is_success()) {
print("Connection to '$url' was OK");
sleep(30);
} else {
print("Cannot access '$url'");
sleep(1);
}
这会打到你的网址,但会在1秒后超时。
答案 1 :(得分:-1)
我可能会将urls加载到数组中并遍历数组。像这样的东西
#!/usr/bin/perl
use warnings;
use strict;
my @urls = qw(test.com url.com 123abc.com fail.aa);
foreach my $url (@urls){
my $check = `wget --server-response $url 2>&1 | grep HTTP/ | awk '{print \$2}'`;
#if there is a successful response you can set the sleep(3) to sleep(30) for your instance.
if($check){
print "Found $url -- sleeping 3 seconds\n";
sleep(3);
}
else{
print "$url does not exist\n";
#If the url does not exist or respond it will move on to the next item in the array. You could add a sleep(1) before the next for a 1 second pause
next;
}
}
当然这是假设你使用的是linux。网址也可以用另一种方式加载,我不知道你当前的脚本是如何得到它们的。以上是一个例子,你当然需要调整以适应你的环境