在一些容器或者精简过的操作系统里,如果netstat无法使用,又想查询网络连接
可以使用以下命令
// 这个地址换成服务地址即可
addr="192.168.0.16:6379"
converted=$(printf "%02X" $(echo $addr | awk -F'.' '{printf "%d.%d.%d.%d\n", $4, $3, $2, $1}' | tr '.' ' '))
port=$(printf "%04X" $(echo $addr | awk -F':' '{print $2}'))
result=${converted}:${port}
cat /proc/net/tcp | awk -v var="$result" '{if($2==var) print $0}' | awk '{split($3,a,":");printf("%d.%d.%d.%d:%d\n", "0x"substr(a[1],7,2),"0x"substr(a[1],5,2),"0x"substr(a[1],3,2),"0x"substr(a[1],1,2),"0x" a[2])}'|awk -F ":" '{print $1}'|sort |uniq -c
原理
其实就是对/proc/net/tcp文件内容进行了格式转换,具体的格式后续有时间补上。