【Shell實戰案例】輸入網絡卡的名字,來輸出網絡卡的IP
阿新 • • 發佈:2021-04-27
輸入網絡卡的名字,來輸出網絡卡的IP
一、問題:
- 輸入的字元不符合網絡卡名字規範,–>?
- 名字符合規範,但是根本沒有這個網絡卡,–>?
- 輸入的網絡卡有多個IP地址,–>?
二、分析:
- 把本機的所有網絡卡名列出來,來引導使用者輸入。
- 使用命令列出所有網絡卡資訊 ifconfig ip addr
- 設計一個函式,把網絡卡名作為引數,函式返回網絡卡的IP
- 在獲取某個網絡卡IP時,考慮網絡卡有多個IP地址(或為空IP的網絡卡)
三、實操
#!/bin/bash #date 2020 04 20 ip add | awk -F ':' '$1~"^[1-9]" {print $2}' >/root/shell_test/eth.list while : do eths=`cat /root/shell_test/eth.list |xargs` read -p "請輸入網絡卡名('$eths'):" e if [ -z "$e" ] then echo "網絡卡名不能為空" continue fi if grep -qw "$e" /root/shell_test/eth.list then break else echo "請輸入正確的網絡卡名" continue fi done ipad() { ip add show dev $e |grep -w 'inet'|awk '{print $2}'|awk -F '/' '{print $1}' >/root/shell_te st/$e.txt n=`wc -l /root/shell_test/$e.txt|awk '{print $1}'` if [ $n -eq 0 ] then echo "無IP地址" else echo "IP地址是:`cat /root/shell_test/$e.txt`" fi } ipad $e