shell腳本應(yīng)用(三)

2018-06-08 17:06 更新

防偽碼:長風(fēng)破浪會有時,直掛云帆濟(jì)滄海

                shell腳本應(yīng)用(三)

前言:當(dāng)面對各種列表重復(fù)任務(wù)時,使用if語句已經(jīng)難以滿足要求,而順序編寫全部代碼更是顯得異常繁瑣,困難重重。使用循環(huán)、分支等其他程序控制結(jié)構(gòu),從而能夠輕松完成更加復(fù)雜、強大的功能。

1、 使用for循環(huán)語句(讀取不同的變量值,用來逐個執(zhí)行同一組命令)

1) 根據(jù)姓名列表批量添加用戶

準(zhǔn)備員工列表文件users.txt,然后編寫一個名為uaddfor.sh的腳本,從users.txt文件中讀取各用戶名稱,重復(fù)執(zhí)行添加用戶,設(shè)置初始密碼的相關(guān)操作。

Vi  /root/users.txt

Vi  uaddfor.sh

執(zhí)行腳本:./uaddfor.sh之后查看用戶文件cat  /etc/passwd

 

2)若要刪除uaddfor.sh腳本添加的用戶,只需要將上面腳本中添加用戶的命令改為刪除的即可。

Vi  udelfor.sh

執(zhí)行腳本之后發(fā)現(xiàn)用戶已經(jīng)刪除

 

3)根據(jù)ip地址列表查看主機狀態(tài)

首先建立ip地址列表文件ipadds.txt,然后編寫一個名為chkhosts.sh的shell腳本,從ipadds.txt文件中讀取各服務(wù)器的ip地址,

重復(fù)執(zhí)行ping連通性測試,并根據(jù)測試結(jié)果輸出相應(yīng)的提示信息。

Vi  /root/ipadds.txt

編寫腳本vi chkhosts.sh

執(zhí)行腳本

2、 使用while循環(huán)語句(重復(fù)測試某個條件,只要條件成立則反復(fù)執(zhí)行。For循環(huán)適合無規(guī)律,列表已固定,while循環(huán)適合要求循環(huán)次數(shù),操作對象按數(shù)字順序編號,按特定條件執(zhí)行重復(fù)操作的情況。)


1) 批量添加規(guī)律編號的用戶,添加20個用戶,名稱依次為stu1,stu2,... Stu20

Vi  uaddwhile.sh

循環(huán)條件:序號<=20

let ++:序號遞增,避免死循環(huán)

執(zhí)行腳本之后查看用戶:cat /etc/passwd

2)刪除所添加的用戶,只需將上述代碼修改即可

Vi  udelwhile.sh

執(zhí)行腳本之后查看用戶是否被刪除

3) 猜價格游戲

思路:通過環(huán)境變量RANDOM可獲得一個小于2的16次方的隨機整數(shù),計算其與1000的余數(shù)即可獲得0-999的隨機價格,反復(fù)猜測操作可以通過以true作為測試條件的while循環(huán)實現(xiàn),當(dāng)用戶猜中實際價格時終止循環(huán),判斷猜測價格與實際價格的過程采用if語句實現(xiàn),嵌套在while循環(huán)體內(nèi),使用變量來記錄猜測次數(shù)。

Vi  pricegame.sh

 Chmod  +x  pricegame.sh

./pricegame.sh執(zhí)行腳本

3、 使用case分支語句(針對變量的不同取值,分別執(zhí)行不同的命令序列 

Case語句可以使用腳本程序的結(jié)構(gòu)更加清晰。

1) 檢查用戶輸入一個字符,通過case語句判斷該字符是否為字母,數(shù)組或其他控制字符,并給出相應(yīng)的提示信息。

Vi  hitkey.sh

執(zhí)行腳本的效果:

1) 編寫系統(tǒng)服務(wù)腳本

通過位置變量$1指定的start,stop,restart,status控制參數(shù),分別用來啟動、停止、重啟sleep進(jìn)程,以及查看sleep進(jìn)程的狀態(tài)。

Vi  myprog

測試并確認(rèn)myprog腳本的執(zhí)行結(jié)果如下:

然后執(zhí)行下面的命令添加myprog為系統(tǒng)服務(wù)

上機實驗部分:

實驗案例:shell腳本應(yīng)用實戰(zhàn)

1、編寫getarp.sh腳本文件

(1)通過arping命令發(fā)送ARP請求,根據(jù)反饋結(jié)果記錄MAC地址。

(2)將網(wǎng)段地址(如192.168.4.)賦值給變量NADD,作為檢測地址的前綴。

(3)使用while循環(huán)語句,重復(fù)檢測目標(biāo)并記錄MAC地址,主機地址從1-254。

我們使用橋接網(wǎng)絡(luò)獲取到0.102和0.103地址,并做測試


1、定義網(wǎng)段地址、MAC列表文件、發(fā)送ARP請求,并記錄反饋結(jié)果(如果網(wǎng)段發(fā)生變化,只需修改MADD=“192.168.x.”)

執(zhí)行腳本之后查看/etc/ethers文件

chmod +x getarp

./getarp

Cat  /etc/ethers

 2、編寫scanhost.sh腳本

(1)有很多方法可以檢測一個主機是否開啟匿名FTP服務(wù),這里采取以wget下載工具訪問FTP根目錄的方式,若能夠成功列表,則視為匿名FTP已開啟,否則視為關(guān)閉。

(2)通過awk命令過濾出/etc/ethers文件中的所有IP地址,賦值給變量TARGET。

(3)使用for循環(huán)語句,讀取TARGET變量中的IP地址,重復(fù)探測FTP開啟情況。

執(zhí)行腳本之前在另一臺linux服務(wù)器B192.168.1.2上搭建ftp服務(wù)(使用vsftpd軟件),然后在linuxA上執(zhí)行腳本

在B上安裝vsftpd,如下圖所示:

Vim /etc/vsftpd/vsftpd.conf啟用匿名,默認(rèn)就啟用了,我們查看一下:

開啟ftp服務(wù)

Service  vsftpd  start

在A上登錄ftp 192.168.1.2測試,如果不能使用ftp命令,則需要安裝ftp-0.17......

最后在A上執(zhí)行腳本./scanhost.sh

執(zhí)行腳本之后發(fā)現(xiàn)192.168.1.2開啟了ftp匿名登錄。

謝謝觀看,希望能真心的幫到您!


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號