1、需求分析
根據系統管理的需求,分析指令碼要實現的功能、功能實現的層次、實現的命令與語句等
2、命令測試
將要用到的命令逐個進行測試,以決定使用的選項、要設定的變數等
3、指令碼程式設計
將測試好的命令寫入指令碼檔案中,並通過各種語句將命令執行的結果儲存、判斷或者發出警報等
4、測試調優
1、對指令碼進行測試,並根據結果進行優化
2、建議一邊程式設計一邊除錯,以減少錯誤的發生
企業環境說明:
隨著業務的不斷發展,某公司所使用的linux伺服器也越來越多。在系統管理和維護過程中,經常需要編寫一些實用的小指令碼,以輔助運維工作,提高效率。
需求描述:
1、編寫名為system.sh的指令碼,記錄區域網中個主機的mac位址,儲存到/etc/ethers檔案中;若此檔案已存在,應先轉移進行備份;每行一條記錄,第一行為ip位址,第2列為對應的mac位址
2、檢查有哪些主機開啟了匿名ftp服務,掃瞄物件為/etc/ethers檔案中的所有ip位址,掃瞄的埠為21
[root@client3 ~
]# vi system.sh
#!/bin/bash
nadd=
"20.0.0."
file=
"/etc/ethers"
#傳送arp請求,並記錄反饋結果
touch /etc/ethers
touch /etc/ethers.old
touch file1.txt
[-f $file ]
&&/bin/cp -f $file $file.old ##備份原有檔案
hadd=
1 ##定義起始掃瞄位址
while
[ $hadd -le 254]do
arping -c 2
-w 1
-i ens33 $$
&>
/dev/
null
if[ $?
-eq 0];
then
arp -n | grep $$
| awk ''
>> $file
filet hadd++
done
sort -u $file >
/root/file1.txt
target=
$(awk ''
/root/file1.txt)
for ip in $target
do wget ftp:
//$ip/
&>
/dev/
null
if[ $?
-eq 0
] then echo "$ip ftp server is up"
rm -rf index.html
fidone
[root@client3 ~
]# sh system.sh
[root@client3 ~
]# cat file1.txt
20.0
.0.100:
50:56:c0:00:
0820.0
.0.1100:
0c:29
:9c:
9e:90
20.0
.0.1200:
0c:29:74
:49:d120.0
.0.200:
50:56:e3:
6f:c1
需求描述
要求apche伺服器繫結網域名稱,客戶機實現訪問。
思路與命令型別
首先配置指令碼檔案,由於dns服務配置需要較多的檔案設定。可以先準備相應檔案,以便配置時呼叫。
檔案1:1912zf.txt (正反向配置檔案)
zone "aa.com" in ;
also-notify ;
};zone "6.168.192.in-addr.arpa" in ;
};
檔案2:http.txt (網頁配置)
web1
檔案3:local.txt(反向解析檔案配置)
$ttl 1d
@ in soa aa.com. rname.invalid. (
0 ; serial
1d ; refresh
1h ; retry
1w ; expire
3h ) ; minimum
ns aa.com.
a 192.168.6.11
11 in ptr www.aa.com.
12 in ptr ftp.aa.com.
檔案4:zone.txt(正向解析檔案配置)
$ttl 1d
@ in soa @ rname.invalid. (
0 ; serial
1d ; refresh
1h ; retry
1w ; expire
3h ) ; minimum
ns @
a 192.168.6.11
www in a 192.168.6.11
ftp in a 192.168.6.12
mail in cname www
檔案5:服務指令碼配置
[root@server2 ~]# vi dns.sh
#!
/bin/bash
# dns快取伺服器a=
/var
/namedb=
/etc/named.confc=
/etc/named.rfc1912.zonesd=
/var
/named/aa.com.zonee=
/var
/named/aa.com.local
apache服務配置
yum -y install bind* 修改主配置檔案
sed -i -e 's/listen-on port 53 ;/listen-on port 53 ;/g' $b
sed -i -e '/allow-query/s///g' $b
cat /root/
1912zf.txt >> $c 區域配置
cp -p $a
/named.localhost $a
/aa.com.zone 區域檔案
cp -p $a
/named.loopback $a
/aa.com.local
cat /root/local.txt > $e 呼叫配置檔案
cat /root/zone.txt > $d
sed -i '1anameserver 192.168.6.11'
/etc/resolv.conf 新增ip位址指向
sed -i '1;2g'
/etc/resolv.conf
systemctl restart named.service 服務啟動
nslookup www.aa.com 解析位址
企業環境說明:
某公司的阿里雲賬戶內有兩台空閒的esc(伺服器),現要使用這兩台伺服器搭建一組遊戲區組,搭建之前有一些初始化及配置操作,要求寫乙個自動化部署的shell指令碼來完成這些任務,並通過shell指令碼來完成ftp的安裝和配置
需求描述:
1、兩台機器分別為a和b,作業系統都是centos 7.3,系統分割槽都在/dev/sda上面,同時b上面還有一塊新新增的磁碟/dev/sdb,該磁碟未被格式化和分割槽
2、shell指令碼要求只在a上執行,完成所有指令碼任務
3、shell指令碼要求完成b的/dev/sdb磁碟分割槽格式化並掛載到/data目錄
4、shell指令碼要求完成a和b的系統初始化
5、shell指令碼要求在a上實現vsftpd的安裝及使用者新增
思路與命令測試
分析:通過統一的入口指令碼檔案,呼叫各功能子指令碼來實現,包括初始化指令碼、ftp安裝配置指令碼等
expect 命令
mkfs 命令
fdisk 命令
yum 命令
useradd 命令
shell程式設計實戰(二)
bin bash 清屏clear verbose 0 help 0 if 1 v then verbose 1 fi 列印幫助資訊 if 1 h then echo hinv echo v verbose echo h help exit fi 獲取作業系統位數 mach uname m 獲取記憶體...
Linux與shell程式設計實戰(一)Linux入門
shell 外殼程式 gui gnome,rde,xfce gli sh,csh 接近c語言 ksh 商業化 bash最強大功能遵循開源,zsh也比較強大但沒有流行 當前所有系統預設都是bash可以支援 程式 唯一 程序 程式的副本,程式的例項 帶有核心管理的生命週期 程序 每個程序不知道,當前主機...
Shell指令碼實戰
shell指令碼程式設計的靈活運用需要有對指令碼基礎,不同的語句組合應用具有十分熟悉的理解。接下來就通過一些實際專案來更加深刻的體會shell在生活中的應用。需求分析 根據系統管理的需求,分析指令碼要實現的功能,功能實現的層次,實現的命令與語句等 命令測試 將要用到的命令逐個進行測試,以決定使用的選...