Bash 具有开放端口nmap的grep IP地址

Bash 具有开放端口nmap的grep IP地址,bash,grep,Bash,Grep,我正在尝试使用nmap中的open port将此脚本制作成grep IP地址,但我不能用正确的方法 我有这样的想法: nmap 192.168.0.0/24 -sU -p 44555 | grep -oP "([0-9]{1,3}\.){3}[0-9]{1,3}" >output.txt 但这是所有IP的开放和关闭 输出nmap示例: Nmap scan report for 79-119-0-248.rdsnet.ro (79.119.0.248) Host is up (0.033

我正在尝试使用nmap中的open port将此脚本制作成grep IP地址,但我不能用正确的方法

我有这样的想法:

nmap 192.168.0.0/24 -sU -p 44555 | grep -oP "([0-9]{1,3}\.){3}[0-9]{1,3}"  >output.txt
但这是所有IP的开放和关闭

输出nmap示例:

Nmap scan report for 79-119-0-248.rdsnet.ro (79.119.0.248)
Host is up (0.033s latency).
PORT      STATE         SERVICE
27023/udp open|filtered unknown

Nmap scan report for 79-119-0-249.rdsnet.ro (79.119.0.249)
Host is up (0.032s latency).
PORT      STATE  SERVICE
27023/udp closed unknown
只有那些是打开/过滤的,我想要 谢谢

它与egrep一起工作:


如果您只想获得开放ip,您可以尝试以下代码(当然有效):

使用awk

nmap 192.168.0.0/24 -sU -p 44555|awk  '/(open|filtered)/{print $2}' RS="Nmap" FS="[)(]"
解释
  • RS=“Nmap”
    -将工时
    Nmap
    设置为记录分隔符变量
  • FS=“[)(]”
    将括号设置为字段分隔符
  • /(open | filtered)/{print$2}
    如果记录有
    open
    filtered
    ,则打印第2列

您能给出nmap的输出吗?我还没有网络输出,所以尝试了另一个范围。很抱歉,我想我误解了您的问题:在以下情况下,您只需要第一个ip?不要忘记通过单击正确答案下的勾号来接受答案。不要忘记通过单击正确答案下的勾号来接受答案威尔。
nmap 192.168.0.0/24 -sU -p 44555 | grep '^44555.*open' -B3 | grep '^Nmap scan' | cut -d\( -f2 | cut -d\) -f1 > output.txt
nmap 192.168.0.0/24 -sU -p 44555|awk  '/(open|filtered)/{print $2}' RS="Nmap" FS="[)(]"