从IP.port中提取IP

从IP.port中提取IP

我已经做了很多挖掘,但还没有找到我的问题的答案。

目前,我有以下命令:

netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}'

返回的内容如下:

192.168.15.73.64759

由此,我只想获取没有端口的 IP。所以,

192.168.15.73

我执行此操作的系统运行嵌入式 Unix 变体 (QNX),并且不支持 -o 作为 grep 的选项。该系统支持 sed 这可能是最好的途径,但我不熟悉该应用程序。

谁能告诉我可以添加什么来获得我正在寻找的输出?

答案1

您可以使用cutsed

echo 192.168.15.73.64759 | cut -d '.'  -f 1-4 
echo 192.168.15.73.64759 | sed -E 's,\.[0-9]+$,,'

或者awk

echo 192.168.15.73.64759 | awk -F '.' '{print $1"."$2"."$3"."$4}'

答案2

刚刚了解了ss:

ss -n -o state established '( dport = :telnet or sport = :ssh )' | 
  awk  'NR==2 { print substr($5, 1, index($5, ":")-1) }'

我使用 NR==2 跳过标题并仅抓取输出的第一行,以与您的 netstat/grep 行为相对应。 awk 代码的其余部分打印 $5,但从第一个字符开始,直到找到“:”的索引,减一。

如果系统缺失ss,那么你可以使用 sed:

echo 192.168.15.73.64759 | sed 's/\.[0-9]*$//'

netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}' | sed 's/\.[0-9]*$//'

这会将“句点后跟零个或多个数字,后跟行尾”替换为“无”。

答案3

使用字符串替换:

$ IP=192.168.15.73.64759
$ echo ${IP%.*}
192.168.15.73

IP=$(netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}')
echo ${IP%.*}

答案4

netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}' |grep -Po "\b(?:\d{1,3}\.){3}\d{1,3}\b"

相关内容