如果本地端口正在侦听或空闲,我想实现在ruby中检查。需要的脚本返回代码在空闲端口的情况下是0
和在端口被占用(侦听)的情况下返回代码是1
。
这里重要的是端口是本地的,而不是远程的!对于远程端口,我找到了这个解决方案:Ruby - See if a port is open
我已经尝试过这个脚本:
ruby -e "
require 'socket' ;
server=TCPServer.new(25) ;
if server==nil ;
return 1 ;
else server.close ;
end
"
在空闲端口时返回"0“,在端口被占用时返回”0
-e:1:in `initialize': no implicit conversion of nil into String (TypeError)
from -e:1:in `new'
from -e:1:in `<main>'
那么如何改正这行脚本呢?
发布于 2015-12-20 04:37:29
尝试:
ruby -e "require 'socket';
begin
sock = Socket.new(Socket::Constants::AF_INET, Socket::Constants::SOCK_STREAM, 0);
sock.bind(Socket.pack_sockaddr_in(YOUR_PORT_HERE, '0.0.0.0'));
exit(0);
rescue Errno::EADDRINUSE;
exit(1);
end"
(如果需要,请用实际端口号替换YOUR_PORT_HERE,并删除换行符)
https://stackoverflow.com/questions/34374625
复制相似问题