# Gawk version | |
# Remote | |
grep -v "rem_address" /proc/net/tcp | awk '{x=strtonum("0x"substr($3,index($3,":")-2,2)); for (i=5; i>0; i-=2) x = x"."strtonum("0x"substr($3,i,2))}{print x":"strtonum("0x"substr($3,index($3,":")+1,4))}' | |
# Local | |
grep -v "rem_address" /proc/net/tcp | awk '{x=strtonum("0x"substr($2,index($2,":")-2,2)); for (i=5; i>0; i-=2) x = x"."strtonum("0x"substr($2,i,2))}{print x":"strtonum("0x"substr($2,index($2,":")+1,4))}' | |
# No Gawk | |
# Local | |
grep -v "rem_address" /proc/net/tcp | awk 'function hextodec(str,ret,n,i,k,c){ | |
ret = 0 | |
n = length(str) | |
for (i = 1; i <= n; i++) { | |
c = tolower(substr(str, i, 1)) | |
k = index("123456789abcdef", c) | |
ret = ret * 16 + k | |
} | |
return ret | |
} {x=hextodec(substr($2,index($2,":")-2,2)); for (i=5; i>0; i-=2) x = x"."hextodec(substr($2,i,2))}{print x":"hextodec(substr($2,index($2,":")+1,4))}' | |
# Remote | |
grep -v "rem_address" /proc/net/tcp | awk 'function hextodec(str,ret,n,i,k,c){ | |
ret = 0 | |
n = length(str) | |
for (i = 1; i <= n; i++) { | |
c = tolower(substr(str, i, 1)) | |
k = index("123456789abcdef", c) | |
ret = ret * 16 + k | |
} | |
return ret | |
} {x=hextodec(substr($3,index($3,":")-2,2)); for (i=5; i>0; i-=2) x = x"."hextodec(substr($3,i,2))}{print x":"hextodec(substr($3,index($3,":")+1,4))}' | |
# All in one | |
awk 'function hextodec(str,ret,n,i,k,c){ | |
ret = 0 | |
n = length(str) | |
for (i = 1; i <= n; i++) { | |
c = tolower(substr(str, i, 1)) | |
k = index("123456789abcdef", c) | |
ret = ret * 16 + k | |
} | |
return ret | |
} | |
function getIP(str,ret){ | |
ret=hextodec(substr(str,index(str,":")-2,2)); | |
for (i=5; i>0; i-=2) { | |
ret = ret"."hextodec(substr(str,i,2)) | |
} | |
ret = ret":"hextodec(substr(str,index(str,":")+1,4)) | |
return ret | |
} | |
NR > 1 {{if(NR==2)print "Local - Remote";local=getIP($2);remote=getIP($3)}{print local" - "remote}}' /proc/net/tcp |
this was useful to me because in some docker containers there's no ss nor netstat
My docker container did not come with and of the tools recommended when you google for listening ports: netstat, ss, lsof, or nmap. Copying and pasting the all in one after running docker exec -it /bin/bash worked. I was able to diagnose my problem as result. Thank you!
Awesome sauce.
Thanks for sharing!
Really useful script, thanks for sharing!
I've made a little addition to include TCP states, if anyone cares:
https://gist.github.com/qistoph/1b0708c888f078c3720de6c6f9562997
👍
Thank you so much, I really appreciate you sharing these scripts
Thank you so much my friend, i was gonna bang my head into the wall for couple of weeks at least.... Its bad when you need to check network connections in a container without ss or netstat....
kubectl describe pod/xxxx,docker inspect xxxxxxxxxxxxx .
👍
very nice!
Don't forget about
ss