以一個(gè)IP地址為參數(shù),判斷該IP地址所在網(wǎng)段的主機(jī)在線狀態(tài)憋槐,并打印出來
#!/bin/bash
set -ue
read -p "please input ipaddrs: " net
[[ $net =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] || (echo "This is not a correct IP address";exit 10) #判斷左邊的字符串是否和右邊的字符串相等角钩,等同于判斷了IP地址是否合法
net1=`echo "$net" | egrep -o "^([0-9]+\.){3}"`
for id in {1..254} ;do
{
ping -c1 -w1 $net1$id &>/dev/null && echo "$net1$id is up " || echo "$net1$id is down"
}&
done
wait
在讀入一個(gè)IP地址為參數(shù)后蠢甲,首先判斷IP地址是否合法,合法才執(zhí)行后續(xù)命令
{ COMMAND; }&
在腳本里可以實(shí)現(xiàn)命令后臺(tái)并發(fā)執(zhí)行
wait
可以實(shí)現(xiàn)在命令結(jié)束后自動(dòng)切換到下一個(gè)命令提示符
這里可能涉及條件測試的知識(shí):
test和 [ ]用法
-z STRING 字符串是否為空滥崩,沒定義或空為真岖圈,不空為假,
-n STRING 字符串是否不空钙皮,不空為真蜂科,空為假
STRING 同上
STRING1 = STRING2 是否等于,注意 = 前后有空格
STRING1 != STRING2 是否不等于**
**> ascii碼是否大于ascii碼
< 是否小于
[[]] 用法短条,建議导匣,當(dāng)使用正則表達(dá)式或通配符使用,一般情況使用 [ ]
== 左側(cè)字符串是否和右側(cè)的PATTERN相同
注意:此表達(dá)式用于[[ ]]中茸时,PATTERN為通配符
=~ 左側(cè)字符串是否能夠被右側(cè)的正則表達(dá)式的PATTERN所匹配
注意: 此表達(dá)式用于[[ ]]中贡定;擴(kuò)展的正則表達(dá)式