自动检索我当前所有连接的外部 ip 地址
automated retrieval of the external ip address of all of my current connections
我正在尝试制作一个程序,自动列出从路由器外部到我的计算机的所有连接。该脚本的最终目标是我希望能够获得我连接的每个 server/website 的外部 IP 地址的干净列表。我也试图用它来了解更多关于网络、网站和服务器如何工作的方式,所以对于我在术语和常识上犯的任何错误,我深表歉意!
我的 tcpdump bash 脚本:
while :
do
# get myip and assign it to a variable
myip="$(ifconfig wlp2s0 | grep -E -o -m 1 "inet................" | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")"
# tcpdump on my ip for all packets going to or from my ip address. the ipaddress of the packets is placed in IP Address.txt
sudo tcpdump -c 1 -nn host "$myip" | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" >> IPaddress.txt
done
我认为 tcpdump 将是解决此问题的工具,但我承认我不知道 tcpdump 是如何工作的。这个脚本是一个 bash 文件,我是 运行 到 ubuntu。我将如何使用 tcpdump 收集我连接到的每个网站的 IP 地址?我阅读了 tcpdump 文档并相信它可以帮助我实现我的目标,但是如果有更好的工具,我很乐意听到它!目前,此代码仅显示内部 IP 地址。 ;(
我更倾向于使用 ss
或 netstat
。
ss --all --ipv4
将显示所有 IPv4 连接。
同样适用于 IPv6 当然;如果需要,您可以添加许多参数之一以获得更详细的信息,例如 --processes
、--extended
或 --info
.
还有一些参数可以控制输出格式,使其更适合解析:
ss --all --ipv4 --processes --no-header --oneline
建议遵循 ss
命令。
了解 ss
命令 here.
我正在尝试制作一个程序,自动列出从路由器外部到我的计算机的所有连接。该脚本的最终目标是我希望能够获得我连接的每个 server/website 的外部 IP 地址的干净列表。我也试图用它来了解更多关于网络、网站和服务器如何工作的方式,所以对于我在术语和常识上犯的任何错误,我深表歉意!
我的 tcpdump bash 脚本:
while :
do
# get myip and assign it to a variable
myip="$(ifconfig wlp2s0 | grep -E -o -m 1 "inet................" | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")"
# tcpdump on my ip for all packets going to or from my ip address. the ipaddress of the packets is placed in IP Address.txt
sudo tcpdump -c 1 -nn host "$myip" | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" >> IPaddress.txt
done
我认为 tcpdump 将是解决此问题的工具,但我承认我不知道 tcpdump 是如何工作的。这个脚本是一个 bash 文件,我是 运行 到 ubuntu。我将如何使用 tcpdump 收集我连接到的每个网站的 IP 地址?我阅读了 tcpdump 文档并相信它可以帮助我实现我的目标,但是如果有更好的工具,我很乐意听到它!目前,此代码仅显示内部 IP 地址。 ;(
我更倾向于使用 ss
或 netstat
。
ss --all --ipv4
将显示所有 IPv4 连接。
同样适用于 IPv6 当然;如果需要,您可以添加许多参数之一以获得更详细的信息,例如 --processes
、--extended
或 --info
.
还有一些参数可以控制输出格式,使其更适合解析:
ss --all --ipv4 --processes --no-header --oneline
建议遵循 ss
命令。
了解 ss
命令 here.