簡體   English   中英

Bash one liner 列出 CIDR 中所有被占用的 IP?

[英]Bash one liner to list all occupied IPs in a CIDR?

我需要一個 Bash one liner,它可以在我提供的 CIDR 中打印所有占用的 IP,但我沒有找到如何去做。 我有一個可以執行此操作的腳本,但我沒有設法讓它作為單行運行。 劇本:

#!/bin/sh
pingf(){
    if ping -w 2 -q -c 1 10.5.99."$1" > /dev/null ;
    then 
        printf "IP %s is up\n" 10.5.99."$1"
    fi
}

main(){

    NUM=1
    while [ $NUM -lt 255  ];do 
        pingf "$NUM" &
        NUM=$(expr "$NUM" + 1)
    done
    wait
}
main

任何幫助將不勝感激!

使用帶有序列表達式的for循環。

&&替換if語句以組合pingprintf

for ip in 10.5.99.{1..255}; do ping -w 2 -q -c 1 "$ip" >/dev/null && printf "IP %s is up\n" "$ip" & done
wait

序列表達式是bash擴展,因此您需要將#!/bin/sh更改為#!/bin/bash

請注意,這僅測試單個 /24,而不是任意 CIDR 塊。 我想不出一種方法將其推廣到單行中的 CIDR 塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM