寻找下一个开放端口
有没有什么办法,使用基本的 Unix 命令,找到下一个未使用的端口号,从端口 4444 开始向上?我通过 ssh(通过 openssh)进入 Windows XP 计算机,运行 Cygwin 工具并使用 bash shell。
谢谢,-戴夫
Is there any way, using basic Unix commands, to find the next unused port number, starting at port 4444 and going upwards? I'm ssh'ed (via openssh) into a Windows XP machine, running Cygwin tools and using a bash shell.
Thanks, - Dave
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个:
如果 telnet 以退出代码 1 结束,
则意味着连接被拒绝:
否则我们认为连接成功,退出代码为 0。
编辑:
cygwin 特别:您需要安装包含 telnet 端口的附加软件包
inetutils
并使用脚本如下:Try this:
where
if telnet finishes with exit code 1 that mean connection refused:
else we decided that connection was success with exit code 0.
EDIT:
Special for cygwin: You need to install additional package
inetutils
that is contain telnet port and use the script as follows:与上面相同,但是写成函数
Same as above, but written as a function
以下函数不依赖于 telnet/netcat,因为它会在本地端口范围内生成随机端口,并将其与正在运行的应用程序当前使用的端口列表进行比较。
应该适用于任何支持 proc 文件系统的 *nix。生成一个免费的临时端口供您的应用程序使用。
显然 TCP 连接可以在 Linux 上用作文件描述符。以下函数使用该技术,并且应该比前一个函数更快。
这是一个跨平台函数,使用 osquery 获取监听端口列表。应该也可以在 Windows 上运行。
使用说明。将输出绑定到变量并在脚本中使用。在 Ubuntu 16.04 上测试
The following function doesn't depend on telnet/netcat as it generates a random port in the local port range and compares it with a list of ports currently used by running applications.
Should work on any *nix that supports proc filesystem. Generates a free ephemeral port to be used by your application.
Apparently TCP connections can be used as file descriptors on linux. The following function uses that technique and should be faster than the previous one.
This is a cross platform function that uses osquery to get a list of listening ports. Should also work on Windows.
Usage instructions. Bind the output to a variable and use in scripts. Tested on Ubuntu 16.04