0
我需要检查远程计算机是否正在ping,以便我可以对该计算机执行ssh并在那里执行命令。如何在perl中执行此检查?如何检查远程计算机是否可以在perl中ping通
我需要检查远程计算机是否正在ping,以便我可以对该计算机执行ssh并在那里执行命令。如何在perl中执行此检查?如何检查远程计算机是否可以在perl中ping通
Net::Ping
,但这是一个愚蠢的做法。如果你想连接SSH,只需要做,如果你不能处理失败。
如果网络接口响应ping,这不能保证SSH工作。相反,SSH可以工作并且ping被阻塞。
一个简单而快速的测试,一个主机特定端口上侦听可以使用IO::Socket::INET
use IO::Socket::INET;
my $address_tuple = "$ip:$port";
my $test_sock = IO::Socket::INET->new(PeerAddr => $address_tuple, Timeout => 0.15);
if ($test_sock) {
# Host is up and appears to be listening on that port
$test_sock->close();
}
else {
# Host doesn't appear to be listening on that port
}
嗯,你是正确的完成。但是我只想在进行一些处理之前进行基本检查。这就是为什么。谢谢兄弟..我在我的程序中使用期望做的ssh。 – Raj 2010-07-08 09:40:20
。在那里我给了像 [email protected]; $ exp-> spawn(“ssh $ argument”)或者死于“无法产生ssh到ip $ ssh_ip_address \ n”; 但即使它不能执行ssh也不会打印无法将ssh分配给ip $ ssh_ip_address。你能帮我解释为什么它不会发生吗? – Raj 2010-07-08 09:42:12
[打开一个新问题](http://stackoverflow.com/questions/ask)为这个不同的问题。 – daxim 2010-07-08 09:53:27