Shell程式設計實戰

2021-10-25 10:36:21 字數 4808 閱讀 6526

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在生活中的應用。需求分析 根據系統管理的需求,分析指令碼要實現的功能,功能實現的層次,實現的命令與語句等 命令測試 將要用到的命令逐個進行測試,以決定使用的選...