寻找一种将输出的第二列传递给 geoiplookup 的方法,理想情况下在同一行,但不一定。这是我能做到的最好的。它是可用的,但不幸的是 geoiplookup 结果在连接列表的下方。我想要更综合的结果。如果有人可以提出改进建议,他们将受到欢迎。
ns () {
echo ""
while sleep 1; do
lsof -Pi |
grep ESTABLISHED |
sed "s/[^:]*$//g" |
sed "s/^[^:]*//g" |
sed "s/://g" |
sed "s/->/\t/g" |
grep -v localdomain$ |
tee >(for x in `grep -o "\S*$"`; do geoiplookup $x | sed "s/GeoIP.*: /\t/g"; done)
done
}
结果目前看起来像这样:
<Port> <URL or IP if no reverse available #1>
<Port> <URL or IP if no reverse available #2>
<geoiplookup trimmed result #1>
<geoiplookup trimmed result #2>
这就是我最终得到的结果,这在很大程度上要感谢 RobotJohnny。
在改进方面,这取决于
lsof -Pi
您对哪些数据感兴趣。这是一个打印命令、PID、用户、节点、IP、端口和geoip的“单线”(不是那么多..):
例如输出:
如果您希望它作为您
.bashrc
或其他东西中的功能,您可以让它看起来更好一点:请注意,这不适用于 IPv6 查找,因为您需要使用
geoiplookup6
它。您可以添加一个条件来检查 IP 类型,然后geoiplookup/6
根据输出运行。例如:但要将其与上述代码一起使用,您需要删除 IPv4 正则表达式,或添加到其中以包含 IPv6