1. 程式人生 > 其它 >【Shell實戰案例】輸入網絡卡的名字,來輸出網絡卡的IP

【Shell實戰案例】輸入網絡卡的名字,來輸出網絡卡的IP

輸入網絡卡的名字,來輸出網絡卡的IP

一、問題:

  1. 輸入的字元不符合網絡卡名字規範,–>?
  2. 名字符合規範,但是根本沒有這個網絡卡,–>?
  3. 輸入的網絡卡有多個IP地址,–>?

二、分析:

  1. 把本機的所有網絡卡名列出來,來引導使用者輸入。
  2. 使用命令列出所有網絡卡資訊 ifconfig ip addr
  3. 設計一個函式,把網絡卡名作為引數,函式返回網絡卡的IP
  4. 在獲取某個網絡卡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

在這裡插入圖片描述