Dan*_*iel 4 c linux networking
如果本地计算机上的端口(如果通过IP或接口也需要)处于侦听状态,我如何检查?我不想连接到此端口进行检查,因为我不想激怒此端口后面的服务.
我想用它来将缺少的net.tcp.listen项添加到Zabbix.
编辑 - 这是真正的答案:
正确的方法是读取套接字表:
/ proc/net/tcp/proc/net/tcp6
它们包含如下行:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:1F40 00000000:0000 0A 00000000:00000000 00:00000000 00000000 101 0 4083927 1 f5d15240 750 0 0 2 -1
1: 00000000:2742 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1002 0 6100 1 decd76c0 750 0 0 2 -1
Run Code Online (Sandbox Code Playgroud)
并且可以轻松解析监听套接字(dst:00000000:0000).netstat上的一个strace显示netstat以相同的方式工作.
只是尝试打开端口进行收听.你会收到一个错误.
你无法从另一个进程窃取一个端口,所以这将是安全的,当然很容易实现,因为除了正确的错误处理之外,它不需要额外的代码.
就像是netstat?
`netstat -anp`
Run Code Online (Sandbox Code Playgroud)
将列出所有端口并且应该可以解决问题。
由于这是开源软件,您可能会从中获得一些灵感。我相信它是用 C 编写的。