[英]Increment IP address in a shell script
可以用另一種方式編寫這個腳本來增加這樣的 ip 地址 whitout 循環嗎? 腳本,一個端口掃描器,工作正常,我的只是一個關於效率的問題。 對不起我的英語,感謝您的回答。
#!/bin/bash
ip=$1
IFS=. read i1 i2 i3 i4 <<< "$ip"
port=$2
max=255
while [ $i1 -le $max ];do
while [ $i2 -le $max ]; do
while [ $i3 -le $max ]; do
while [ $i4 -le $max ]; do
timeout 0.4 bash -c "echo >/dev/tcp/$i1.$i2.$i3.$i4/$port" && echo "on $i1.$i2.$i3.$i4 port $port is open"
i4=$(($i4+1))
done
i4=0
i3=$(($i3+1))
done
i3=0
i2=$(($i2+1))
done
i2=0
i1=$(($i1+1))
done
這個函數只是打印下一個ip:
nextip(){
IP=$1
IP_HEX=$(printf '%.2X%.2X%.2X%.2X\n' `echo $IP | sed -e 's/\./ /g'`)
NEXT_IP_HEX=$(printf %.8X `echo $(( 0x$IP_HEX + 1 ))`)
NEXT_IP=$(printf '%d.%d.%d.%d\n' `echo $NEXT_IP_HEX | sed -r 's/(..)/0x\1 /g'`)
echo "$NEXT_IP"
}
所以你可以像這樣增加它:
FIRST_IP=192.168.1.250
NUM=10
IP=$FIRST_IP
for i in $(seq 1 $NUM); do
echo $IP
IP=$(nextip $IP)
done
示例輸出:
192.168.1.250
192.168.1.251
192.168.1.252
192.168.1.253
192.168.1.254
192.168.1.255
192.168.2.0
192.168.2.1
192.168.2.2
192.168.2.3
看一眼:
i1=0; i2=0; i3=0; i4=0
max=255
eval printf -v ip "%s\ " {$i1..$max}.{$i2..$max}.{$i3..$max}.{$i4..$max}
for i in $ip; do
# do here somthing with $i
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.