linux-shell編程13:shell 練習

shell腳本練習

檢查主機存活狀態

- 有一個主機列表

- 將錯誤ip放到數組裏面判斷是否ping失敗三次

/bin/bash
# test host living status
#host list
IP_LIST="192.168.0.1 192.168.0.2 192.168.13.141 192.168.1.7 192.168.1.8 192.168.1.6 192.168.1.5"
for IP in $IP_LIST;do
    NUM=1
    while [ $NUM -le 3 ];do
        if ping -c 1 $IP >/dev/null;then
            echo "$IP ping is successful."
            break
        else
            echo "$IP ping is faiure $NUM"
            FALL_COUNT[$NUM]=$IP
            let NUM++
        fi
    done
    #the  fail ip  to arr and ping three time
    if [ ${#FALL_COUNT[*]} -eq 3 ];then
        echo "${FALL_COUNT[1]} Ping is failure!"
        unset FALL_COUNT[*]
    fi
done

- 將錯誤次數放到FALL_COUNT便利那個裏面判斷是否ping三次失敗

#!/bin/bash
# test host living status
#host list
IP_LIST="192.168.0.1 192.168.0.2 192.168.13.141 192.168.1.7 192.168.1.8 192.168.1.6 192.168.1.5"
for IP  in $IP_LIST;do
    FALL_COUNT=0
    for ((i=1;i<=3;i++));do
        if ping -c 1 $IP > /dev/null;then
            echo "$IP ping is successfull."
            break
        else
            echo "$IP ping is failure $i"
            let FALL_COUNT++
        fi
    done
    if [ $FALL_COUNT -eq 3 ];then
        echo "$IP Ping is failure~~"
    fi
done

- 利用for循環將ping通的地址跳出循環繼續,如果跳不出打印ping失敗

#!/bin/bash
# test host living status
#host list
IP_LIST="192.168.0.1 192.168.0.2 192.168.13.141 192.168.1.7 192.168.1.8 192.168.1.6 192.168.1.5"
ping_success_status() {
    if ping -c 1 $IP > /dev/null;then
        echo "$IP Ping is susccessful"
        continue
    fi
}

for IP in $IP_LIST;do
    ping_success_status
    ping_success_status
    ping_success_status
    echo "$IP ping is failure~~~~"
done

判斷輸入的是否是IP

- 第一種

#!/bin/bash
#check input is ip address?
function check_ip {
    IP=$1
    VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "Yes"}')
    if echo $IP | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null;then
        if [ $VALID_CHECK == "Yes" ];then
            echo "$IP is IPv4 address!!"
        else
            echo "$IP not Ipv4 address!!!"
        fi
    else
        echo "$IP Format Error~~~~"
    fi
}
check_ip 192.168.1.1
check_ip 2662.2432.232.322
check_ip ccsacascascca
check_ip a.a.a.a
check_ip 0.2.3.3
check_ip 0..32.
check_ip 10.10.3.6

- 第二種
/bin/bash
#check input is ip address?
function check_ip {
    IP=$1
    VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "Yes"}')
    if echo $IP | grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null;then
        if [ $VALID_CHECK == "Yes" ];then
            echo "$IP is IPv4 address!!"
            return 0
        else
            echo "$IP not Ipv4 address!!!"
            return 1
        fi
    else
        echo "$IP Format Error~~~~"
        return 1
    fi
}
while true;do
    read -p "plses input one ip address:" IP
    check_ip $IP
    [ $? -eq 0 ] && break || continue
done

RHCE腳本考題

- 基礎題
    - 在某臺設備上創建一個名爲/root/foo.sh的腳本
    - 當運行/root/foo.sh redhat是輸出fedora
    - 當運行/root/foo.sh fedora是輸出redhat
    - 當沒有任何參數或者參數不是以上倆個則輸出/root/foo.sh redhat|fedora

!/bin/bash
case $1 in
    fedora)
        echo "redhat"
        ;;
    redhat)
        echo "fedora"
        ;;
    *)
        echo "/root/foo.sh redhat|fedora"
esac

- 進階題目
    - 創建一個添加用戶的腳本
    - https://wenku.baidu.com/view/b1c071b2690203d8ce2f0066f5335a8102d26632.html

    #!/bin/bahs
    if [ $# -ne 1];then
    echo "wenjia meiyou "
    exit 1
    elif [ if $1 ];then
    for i in `cat $1`
    do
    useradd -s /bin/false $i
    done
    else
    echo "input file not found" >&2
    exit 1
    fi
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章