perl侦听端口号以检查状态

pvcm50d1  于 2022-11-15  发布在  Perl
关注(0)|答案(2)|浏览(173)

我有一个守护进程,我需要检查它的状态,看看它是打开还是关闭。到目前为止,我正在使用一个expect脚本telnet到端口,看看它是否是活的。我期待着用Perl重写它,以检查相同的。任何指向模块或功能的指针,我可以使用非常感谢。

yr9zkbsy

yr9zkbsy1#

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

anauzrmj

anauzrmj2#

为了快速检查单个端口,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,以调整在放弃并确定端口未被使用之前等待的时间。我使用了100 ms,没有问题。

相关问题