問題
本案例要求編寫三個指令碼程式,分別實現以下目標:
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 //不管是否已設定
[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:關閉
linux 簡單shell指令碼編寫
前幾天學習了一些shell指令碼編寫,今天把它記下來。下面的指令碼是修改電腦的ip位址 子網掩碼 閘道器。bin bash 這句話是指定指令碼的直譯器是bash read p please input ipaddr ip read p這個語句就是通過鍵盤讓自己輸入要輸入的內容 read p plea...
簡單的shell指令碼
bin bash set x count 1 port 10125 ip 125 pre 100 dir pwd destination home while count le 3 dodir expr pre count reip ip report port mkdir dir sed e s ...
Linux的shell指令碼
shell 程式設計一般指 shell 指令碼程式設計。語法 使用 vi 編輯器新建乙個檔案 hello.sh bin bash echo hello world 執行 方式1 sh hello.sh 方式2 chmod x hello.sh 使指令碼具有執行許可權 hello.sh 執行指令碼 4...