bash編程又稱bash腳本和shell腳本,是一種有多條線終端命令構成的腳本程序,所有可以直接在終端界面里運行的命令,都可以通過腳本來執行
我們拿就拿ping命令來說,怎么使用ping命令對局域網進行掃描,識別當前網絡下活躍主機,下面筆者將通過bash編程來簡單的解釋
1.在Linux中創建一個.sh程序? ? ? ? ?命令:touch xxxx.sh????
2.啟用編輯模式vim/nano編寫腳本
在第一行:#/bin/bash? ? ?會讓終端界面調用Bash解釋器
第二行:if判斷語句
它的寫法很簡單
if [條件表達式]
then
..............
else
..............
相當于其他語言if判斷語句,拿java來說,上面的if判斷語句就等同于
if(條件表達式){
..................
}else{.
}
then即相當于大括號
條件表達式[" $1" == " " ]? ?這句話的意識是說[ "當第一個參數為空時" ]? ? ?$1表示傳入的第一個參數。==是邏輯判斷符
下面的echo "........",用于像終端界面輸出提示,當第一個傳輸參數為空的時候就會顯示echo “ ”中的內容,如果不為空就顯示else里面的內容
但光有if語句是不行的,即使傳遞了一個參數,這個程序也不具備相應的處理功能,因為我們要探測某個“c類網段”的全部在線主機,所以需要以循環的方式ping那些末尾為1~254(IPv4地址的最后一個八位組)的全部IP
for循環語句
for x in `seq 1 254`;
等同于java中
for(int x=1;x<=254;x++){
}
當我們傳遞參數時,例如當我們在終端執行./xxxx.sh 192.168.20時腳本程序會從192.168.20.1開始直到運行到192.168.20.254時結束
(這里說一下,為什么需要以./xxxx.sh來運行程序。應為當前目錄沒有被環境變量PATH收錄所有不能直接以xxx.sh運行)
for x in `seq 1 254`;后面跟do表示執行,do下面就是要執行的內容了
ping -c $1.$x
我們希望程序在for循環語句的每次迭代過程中都ping一個ip地址。根據相關使用說明可知,ping命令的-c選項可以限定它ping某臺既定主機的探測次數。因此-c選項設定為1,讓程序對每個主機只ping一次
$1.$x:$1表示傳入的第一個參數,$x表示for循環使用的循環變量
但是這樣ping出來的效果好像不是很理想,因為我們只需要知道在線的主機就行了
所以我們在ping -c $1.$x后面加上grep篩選命令
ping -c $1.$x | grep "64 bytes from"
如此一來就可以只看在線主機的ip地址了
值得注意的是在保存腳本過后,需要使用chmod命令進行權限處理