Procurando uma maneira de passar a segunda coluna de saída para geoiplookup, idealmente na mesma linha, mas não necessariamente. Isso é o melhor que posso reunir. É utilizável, mas os resultados do geoiplookup infelizmente estão abaixo da lista de conexões. Eu queria resultados mais integrados. Se alguém puder sugerir melhorias, serão bem vindas.
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
}
Os resultados atualmente se parecem com isto:
<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>
Aqui está o que acabei fazendo, em grande parte graças ao RobotJohnny.
Em termos de melhorias, dependeria de quais dados
lsof -Pi
você está interessado.Aqui está um "one liner" (não tanto ..) que imprime comando, PID, usuário, nó, IP, porta e geoip:
por exemplo, saída:
se você quiser isso como uma função no seu
.bashrc
ou algo assim, você pode torná-lo um pouco mais bonito:observe que isso não funcionaria para pesquisas IPv6, porque você precisaria usar
geoiplookup6
para isso. Você pode adicionar uma condicional que verifique o tipo de IP e executegeoiplookup/6
dependendo da saída. por exemplo :mas para usar isso com o código acima, você precisaria remover o IPv4 regex ou adicioná-lo para incluir IPv6