簡單shell腳本的設計

2.簡單Shell腳本的設計
問題
本案例要求編寫三個腳本程序,分別實現以下目標:
1)在屏幕上輸出一段文字“Hello World”
2)能夠爲本機快速配好Yum倉庫
3)能夠爲本機快速裝配好vsftpd服務
方案
當腳本的代碼量較大,或者腳本需要傳遞給其他合作者使用時,規範的腳本可以顯著降低代碼維護的難度(可能幾個月以後需要更改功能)、提高代碼的易讀性(小夥伴不會頻繁的來問你“這個變量用來幹嗎的”之類的問題)。
注意:在學習Shell腳本的過程中,如果代碼量比較少,通常就省略註釋了。
一個規範的Shell腳本構成包括:
腳本聲明(需要的解釋器、作者信息等)
註釋信息(步驟、思路、用途、變量含義等)
可執行語句(操作代碼)
Shell腳本的執行方式:
方法一,作爲“命令字”:指定腳本文件的路徑,前提是有 x 權限
方法二,作爲“參數”:使用sh、source或者點號 . 來加載腳本文件
步驟
實現此案例需要按照如下步驟進行。
步驟一:編寫第一個Shell腳本,輸出“Hello World”
1)手動測試腳本功能的實現
要輸出一段話,可以使用echo命令,將指定的字符串放在單引號內即可:
[root@svr5 ~]# echo ‘Hello World’
Hello World
2)根據手動任務操作編寫腳本文件
[root@svr5 ~]# vim /root/first.sh
#!/bin/bash
echo ‘Hello World’

[root@svr5 ~]# chmod +x /root/first.sh //添加可執行權限
3)執行腳本,測試效果
[root@svr5 ~]# /root/first.sh
Hello World
步驟二:編寫爲本機快速配Yum倉庫的Shell腳本
1)手動測試腳本功能的實現
爲RHEL客戶機配置Yum時,需要進入/etc/yum.repos.d/目錄下建立指定的倉庫配置文件;另外,還要注意排除其他倉庫配置的干擾。從無到有的任務實現過程,整理後的操作大致如下(以光盤觸發掛載點/misc/cd作Yum庫爲例)。
首先,清理現有的Yum倉庫配置文件:
[root@svr5 ~]# rm -rf /etc/yum.repos.d/.repo
[root@svr5 ~]# ls /etc/yum.repos.d/
//確認清理結果
ls: 無法訪問/etc/yum.repos.d/: 沒有那個文件或目錄
然後,建立新的Yum倉庫配置文件:
[root@svr5 ~]# vim /etc/yum.repos.d/rhel6.repo
[rhel6]
name=Red Hat Enterprise Linux 6
baseurl=file:///misc/cd
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
2)根據手動任務操作編寫腳本文件
通過vim編輯器建立rhel6.repo的操作需要用戶交互鍵入內容,不方便在Shell腳本中使用。但是因爲Yum配置內容是固定的,因此可以採用echo顯示配置再重定向到倉庫文件的方式,配置內容放在單引號內、正常換行即可。
編寫的腳本內容參考如下:
[root@svr5 ~]# vim /root/el6repo.sh
#!/bin/bash
rm -rf /etc/yum.repos.d/
.repo
echo '[rhel-packages]
name=Red Hat Enterprise Linux 6
baseurl=file:///misc/cd
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
’ > /etc/yum.repos.d/rhel6.repo

[root@svr5 ~]# chmod +x /root/el6repo.sh //添加可執行權限
3)執行腳本,測試效果
爲了方便檢查效果,先清理/etc/yum.repos.d/目錄:
[root@svr5 ~]# rm -rf /etc/yum.repos.d/*
[root@svr5 ~]# ls /etc/yum.repos.d/* //確認清理結果
ls: 無法訪問/etc/yum.repos.d/: 沒有那個文件或目錄
執行配置Yum倉庫的腳本:
[root@svr5 ~]# /root/el6repo.sh
[root@svr5 ~]#
檢查配置結果:
[root@svr5 ~]# ls /etc/yum.repos.d/
//倉庫配置已建立
/etc/yum.repos.d/rhel6.repo

[root@svr5 ~]# yum repolist //Yum倉庫已可用
rhel-packages | 3.9 kB 00:00 …
rhel-packages/primary_db | 3.1 MB 00:00 …
repo id repo name status
rhel-packages Red Hat Enterprise Linux 6 3,690
repolist: 3,690
步驟三:編寫快速裝配vsftpd服務的Shell腳本
1)手動測試腳本功能的實現
根據在Linux網絡服務部分學過的知識,裝配vsftpd服務包括以下過程。
首先,確保安裝vsftpd軟件包(執行yum安裝即可):
root@svr5 ~]# yum -y install vsftpd //不管是否已安裝
… …
然後,確保啓動vsftpd服務:
[root@svr5 ~]# service vsftpd restart //不管是否已啓動
… …
最後,可設置vsftpd開機後能夠自動運行:
[root@svr5 ~]# chkconfig vsftpd on //不管是否已設置
2)根據手動任務操作編寫腳本文件
按照手動任務的順序編排腳本內容,參考如下:
[root@svr5 ~]# vim /root/ftpon.sh
#!/bin/bash
yum -y install vsftpd &> /dev/null
service vsftpd restart
chkconfig vsftpd on

[root@svr5 ~]# chmod +x /root/ftpon.sh //添加可執行權限
3)執行腳本,測試效果
爲了方便檢查效果,先移除vsftpd軟件包:
[root@svr5 ~]# yum -y remove vsftpd
… …
[root@svr5 ~]# rpm -q vsftpd //確認已卸載
package vsftpd is not installed
執行快速裝配vsftpd服務的腳本:
[root@svr5 ~]# /root/ftpon.sh
關閉 vsftpd: [失敗]
爲 vsftpd 啓動 vsftpd: [確定]
確認腳本執行結果:
[root@svr5 ~]# rpm -q vsftpd
vsftpd-2.2.2-11.el6_4.1.x86_64

[root@svr5 ~]# service vsftpd status
vsftpd (pid 45694) 正在運行…

[root@svr5 ~]# chkconfig --list vsftpd
vsftpd 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章