熟悉學習shell編程

來源:互聯網
上載者:User

這是我來公司所做的第一件和編程直接相關的事情,要求使用shell命令,其實感覺linux下面的shell和windows下面的dos批處理是相同的。

 

題目:

       1.使用shell語言流程式控制結合ifconfig、grep、cut、echo、sed等命令從介面上擷取

IP地址、子網路遮罩及乙太網路硬體地址程式showif.sh。

要求 ①以showif.sh <parameter>的形式調用程式。

②輸出<parameter>對應的結果。

③如輸入參數有誤,列印出help資訊。

④執行及輸出如下:

#./showif.sh IPv4

#192.168.0.172

 

2. 使用shell語言流程式控制結合ifconfig、grep、cut、echo、sed等命令即時統計介面流量

程式speed.sh 。

要求: ①統計間隔3秒。

②以speed.sh <if name>的形式調用程式。

③如輸入參數有誤,列印出help資訊。

④執行及輸出如下:

#./speed.sh eth0

#eth0: Recive-> 128.36K Transmit-> 48.75K

#eth0: Recive-> 268.20K Transmit-> 78.00K

 

 

一下是我自己花了一天半的時間做的具體實現:

1.這裡功能是基本實現了,但在使用Regex方面還不是很正確,使用的尋找方法比較簡單。

#!/bin/bash
#filename:showif
if test $# = 0; then
 echo "參數個數不能為0,清輸入正確的參數[IPv4 | SubMask | Mac]"
else if test $1 = "IPv4";then
 echo "輸出IPv4地址:"
 /sbin/ifconfig | awk '{if ( $1 == "inet" && $3 ~ /^Bcast/) print $2}' | cut -f2 -d ":"
else if test $1 = "SubMask";then
 echo "輸出SubMask子網路遮罩:"
 echo `/sbin/ifconfig | awk -F "Mask" '/Mask/ {print $2}'`|cut -f2 -d ":"
 echo `/sbin/ifconfig | awk -F "Mask" '/Mask/ {print $2}'`|cut -f3 -d ":"
 echo `/sbin/ifconfig | awk -F "Mask" '/Mask/ {print $2}'`|cut -f4 -d ":"
 echo `/sbin/ifconfig | awk -F "Mask" '/Mask/ {print $2}'`|cut -f5 -d ":"
else if test $1 = "Mac";then
 echo "輸出Mac物理地址:"
 echo `/sbin/ifconfig | awk -F "HWaddr" '/HWaddr/ {print $2}'`|cut -f1 -d " "
 echo `/sbin/ifconfig | awk -F "HWaddr" '/HWaddr/ {print $2}'`|cut -f2 -d " "
 echo `/sbin/ifconfig | awk -F "HWaddr" '/HWaddr/ {print $2}'`|cut -f3 -d " "
else
 echo "清輸入正確的參數[IPv4 | SubMask | Mac]"
fi
fi
fi
fi

 

2.使用的過濾方式(Regex)不好,而且過濾錯誤的參數輸入方面沒有完成(參數n已定義):

#!/bin/bash
#filename:speed
delay=1
#這裡n的作用是做輸入參數的錯誤偵測的,但實現時沒有具體實現
n=1
 now_get=`/sbin/ifconfig $1 | awk -F "RX bytes:" '/RX/ {print $2}' |cut -f1 -d " "`
 now_up=`/sbin/ifconfig $1 | awk -F "TX bytes:" '/TX/ {print $2}' |cut -f1 -d " "`
while(test $n -ne 0)
do
 have_get=$now_get
 have_up=$now_up
 now_get=`/sbin/ifconfig $1 | awk -F "RX bytes:" '/RX/ {print $2}' |cut -f1 -d " "`
 now_up=`/sbin/ifconfig $1 | awk -F "TX bytes:" '/TX/ {print $2}' |cut -f1 -d " "`
 recv_bytes=`expr $now_get - $have_get`
 recv_bytes=`echo " scale=0; $recv_bytes / $delay" | bc`
# recv_bytes=`echo " scale=0;$recv_bytes / delay" | bc`
 recv_kb=`echo " scale=3; $recv_bytes / 1024" | bc` 
 tran_bytes=`expr $now_up - $have_up`
 tran_bytes=`echo " scale=0; $tran_bytes / $delay" | bc`
# tran_bytes=`echo " scale=0;$tran_bytes / delay" | bc`
 tran_kb=`echo " scale=3; $tran_bytes / 1024" | bc`
# echo "下載:"$recv_bytes "b/s  上傳:"$tran_bytes "b/s"
 echo "下載:"$recv_kb "kb/s    上傳:  "$tran_kb "kb/s"
 sleep $delay
done

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.