1

当我们的监控在我们的系统中发现错误时,我们目前正在使用 pushover 向我们的服务台发送消息。

我们的系统收集数据,创建消息,然后将所需的参数发送到 perl 脚本:

use LWP::UserAgent;
use Getopt::Std;

my %opts=();

my $curPath=$ENV{PATH};
$ENV{PATH} = $curPath.";Perl_Path";


getopts('t:u:m:p:', \%opts) or abort("No options given\n"); 

if (defined $opts{t}) {
  $APP_TOKEN=$opts{t};
}
if (defined $opts{u}) {
  $USER_KEY=$opts{u};
}
if (defined $opts{m}) {
  $MESSAGE=$opts{m};
}
if (defined $opts{p}) {
  $PRIO=$opts{p};
}

my $ua=LWP::UserAgent->new(timeout => 10);
my $response = $ua->post( 
  "https://api.pushover.net/1/messages.json", [
  "token" => "$APP_TOKEN",
  "user" => "$USER_KEY",
  "message" => "$MESSAGE",
  "priority" => "$PRIO"
]);

if ($response->is_success) {
    print $response->decoded_content;
}
else {
    die "HERE: ".$response->status_line;
}

这似乎工作正常,直到昨天我们的服务台注意到,不再发送任何消息。

通过使用虚拟消息执行脚本,我在脚本终止后收到以下错误消息:

Here: 500 can't connect to api.pushover.net:443 <invalid argument>

我曾尝试联系 pushover,但他们并没有我希望的那么有帮助。由于我们没有对发送这些消息的方式进行任何更改,因此我认为是什么 pushover 确实导致了这个问题。

有人知道为什么 LWP::Useragent 可能会发送“无效参数”消息吗?因为我似乎无法在网上找到很多信息。我们确实为此打开了防火墙以访问 2 个 IP,但是用这些 IP 地址替换主机名反而会引发以下错误:

Here: 500 can't connect to api.pushover.net:443 <Bad File Descriptor>

编辑:我们正在为 Windows 使用草莓 perl 安装

我恳请有关解决此问题的建议。先感谢您。

4

1 回答 1

0

IT 看来,Pushover 将他们的 API 迁移到不同的 IP 地址,以抵御针对它的 DDoS 攻击。

由于我们的防火墙仅配置为允许到旧地址的流量,因此我们的系统无法向 IP 发送消息。

为什么 LWP::Useragent 将此标记为“无效参数”目前我无法理解,但目前手头的问题已经解决。

于 2021-03-31T13:03:42.450 回答