【问题标题】:Priting all IP addresses from an IP range ssh/bash [duplicate]从 IP 范围 ssh/bash 打印所有 IP 地址 [重复]
【发布时间】:2016-11-30 03:53:54
【问题描述】:

我正在尝试在命令行中打印 IP 地址范围(例如 72.21.206.0/23)中的所有 IP,最好使用单个命令。

我尝试了几个结合 awk 和 cut 的命令,但未能达到预期的效果。

例如,如果我在 file3 中有以下内容:

72.21.110.0/16
72.21.206.0/23

我想从 72.21.206.0/23 中提取所有 IP 并将它们打印在屏幕上的单独行中。由于我的基础知识,我只达到了这一点:

awk -F'/' 'NR==2{print $1+1}' file3

根据我的假设应该打印出来,但事实并非如此:

72.21.206.1

请你帮忙。

【问题讨论】:

    标签: bash awk ssh centos printf


    【解决方案1】:

    如果你有 nmap 可用,你可以运行类似:

    nmap -n -sL 72.21.110.0/16
    

    这将产生如下输出:

    Nmap scan report for 72.21.0.0
    Nmap scan report for 72.21.0.1
    Nmap scan report for 72.21.0.2
    [...]
    Nmap scan report for 72.21.255.253
    Nmap scan report for 72.21.255.254
    Nmap scan report for 72.21.255.255
    Nmap done: 65536 IP addresses (0 hosts up) scanned in 33.42 seconds
    

    this question 的回答建议使用ipcalc 的解决方案。发现这一点后,我想我将其标记为重复...

    更新

    awk 中的解决方案,专为您准备:

    BEGIN {
      FS="/"
    }
    
    {
      split($1, octets, ".");
      base=lshift(octets[1], 24) + lshift(octets[2], 16)
        + lshift(octets[3], 8) + octets[4];
      max=lshift(1, 32-$2);
    
      for (i=0; i<max; i++) {
        addr = base + i;
        addr = sprintf("%s.%s.%s.%d", rshift(addr, 24),
              rshift(and(addr, 0x00FF0000), 16),
              rshift(and(addr, 0x0000FF00), 8),
              and(addr, 0xFF))
        print addr
      }
    }
    

    给定这样的输入:

    $ echo 192.168.1.0/28 | awk -f ipranger.awk
    

    你会得到这样的输出:

    192.168.0.0
    192.168.0.1
    192.168.0.2
    192.168.0.3
    192.168.0.4
    192.168.0.5
    192.168.0.6
    192.168.0.7
    192.168.0.8
    192.168.0.9
    192.168.0.10
    192.168.0.11
    192.168.0.12
    192.168.0.13
    192.168.0.14
    192.168.0.15
    

    【讨论】:

    • 所提供的解决方案仅适用于一半的情况,因为并非我将使用脚本或命令的所有服务器都具有 Nmap。无论如何,感谢您的快速响应。
    • 我添加了一个纯awk 解决方案。
    猜你喜欢
    • 2016-04-09
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 2022-07-22
    • 2019-02-07
    • 2018-10-08
    • 1970-01-01
    • 2011-02-11
    相关资源
    最近更新 更多