perl侦听端口号以检查状态

时间:2014-04-22 09:15:10

标签: perl port

我有一个守护进程,为此,我需要检查状态并查看它是上升还是下降。截至目前,我正在使用expect脚本telnet到端口,看看它是否还活着。我想用perl重写它,检查一下。我非常感谢任何指向我可以使用的模块或功能的指针。

2 个答案:

答案 0 :(得分:3)

http://metacpan.org/pod/IO::Socket::PortState 这将是一个很好的起点。可能有更好的解决方案,但这就是我正在使用的。

答案 1 :(得分:0)

为了快速检查单个端口,Net::EmptyPort提供了check_port,或者它很简单,可以使用IO::Socket::IP自行完成。两者都比仅使用IO::Socket::PortState一个端口(它将自己的接口描述为“复杂”)要麻烦得少。

使用Net::EmptyPort

use Net::EmptyPort qw<check_port>;

if (check_port 5432)
{
    # ...
}

但是,如果你看看它在做什么,你可以决定自己可以像以下那样轻松地建立套接字连接:

use IO::Socket::IP;

my $socket = IO::Socket::IP->new(PeerAddr => 'localhost', PeerPort => 5432);
if ($socket)
{
  $socket->close;
  # ...
}

这也允许您提供其他参数,例如Timeout来调整放弃之前等待的时间并确定端口未被使用。对于localhost,您可以使用默认值更短的超时时间;我已经毫无问题地使用了100毫秒。