[英]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
語句以組合ping
和printf
。
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.