文章目錄
- 腳本編程步驟分享
- 腳本編程步驟
- 步驟決議
- 專案實戰
- MAC記錄與埠掃描腳本
- 企業環境說明
- 需求描述
- 命令型別
- 專案流程
- 開發系統監控腳本
- 企業環境說明
- 需求描述
- 思路與命令型別
腳本編程步驟分享
腳本編程步驟
1.需求分析
2.命令測驗
3.腳本編程
4.測驗調優
步驟決議
1.需求分析
根據系統管理的需求,分析腳本要實作的功能,功能實作的層次,實作的命令與陳述句等
2.命令測驗
將要用到的命令逐個進行測驗,以決定使用的選項,要設定的變數等
3.腳本編程
將測驗好的命令寫入到腳本檔案中,并通過各種陳述句將命令執行的結果保存,判斷或者發出報警等
4.除錯優化
對腳本進行測驗,并根據結果進行優化
建議一邊編程一邊除錯,以減少錯誤的發生
專案實戰
MAC記錄與埠掃描腳本
企業環境說明
隨著業務的不斷發展,某公司所使用的Linux服務器也越來越多,在系統管理和維護程序中,經常需要撰寫一些實用的小腳本,以輔助運維作業,通過作業效率
需求描述
1.撰寫名為system.sh的腳本,記錄局域網中各主機的MAC地址,保存到/etc/ethers檔案中;若此檔案已存在,應先轉移進行備份;每行一條記錄,第一列位IP地址,第2列為對應的MAC地址
2.檢查有哪些主機開啟了匿名FTP服務,掃描物件為/etc/ethers檔案中的所有IP地址,掃描的埠為21
命令型別
1.分析:記錄局域網中各主機的MAC地址;檢查有哪些主機開啟了匿名FTP服務
2.ping -c 3 -i 0.2 -w 1 ip :發送MAC地址決議請求
3.arp -n:記錄MAC
4.awk :列印ip與MAC地址
5.使用wget下載的方法測驗FTP服務
專案流程
[root@server1 ~]# ping -c 3 -i 0.2 -W 3 20.0.0.11 > a.txt
[root@server1 ~]# cat a.txt
[root@server1 ~]# arping -c 3 -I ens33 -w 3 20.0.0.11 > a.txt
[root@server1 ~]# cat a.txt
[root@server1 ~]# arping -c 1 -I ens33 -w 3 20.0.0.11 > a.txt
[root@server1 ~]# cat a.txt
-c:連接次數
-i:時間間隔
-I:使用網卡
-w:超時時間
[root@server1 ~]# awk '{print $4,$5}' a.txt > b.txt
[root@server1 ~]# cat b.txt
兩個主機安裝ftp,查看21埠狀態
[root@server1 ~]# yum -y install vsftpd
[root@server1 ~]# systemctl start vsftpd
[root@server1 ~]# netstat -anpt | grep 21
[root@server2 ~]# yum -y install vsftpd
[root@server2 ~]# systemctl start vsftpd
[root@server2 ~]# netstat -napt | grep 21
[root@server2 ~]# nmap -p 21 20.0.0.10 查看對應主機21埠是否開啟
[root@server2 ~]# nmap -p 21 20.0.0.10 &> /dev/null
[root@server2 ~]# wget ftp://20.0.0.10 匿名下載,下載檔案名為index.html
選擇一臺新的進行shell腳本測驗
1.進行記錄在線用戶并測驗其是否開放21號埠
[root@client1 ~]# vi system.sh
[root@client1 ~]# chmod +x system.sh
[root@client1 ~]# ./system.sh
[root@client1 ~]# sort -u /etc/ethers
sort -u:等同于uniq,表示相同的資料僅顯示一行
#!/bin/bash
# 記錄在線用戶并測驗其是否開放21號埠
net="20.0.0." 定義變數地址段
file=/etc/ethers 義變數記錄檔案位置
[ -f /etc/ethers ] && cp -f $file $file.bak 檔案存在判斷,存在備份
add=1 回圈測驗的起始變數
while [ $add -le 20 ] 回圈條件
do 20.0.0. 1
ping -c 3 -i 0.2 -w 1 ${net}${add} &> /dev/null
if [ $? -eq 0 ] 追加
then arp -n | grep ${net}${add} | awk '{print $1,$3}' >> $file
fi 以數字形式顯示
let add++
done
2.進行ftp在線測驗
[root@client1 ~]# vi system.sh
[root@client1 ~]# chmod +x system.sh
[root@client1 ~]# ./system.sh
#!/bin/bash
# 記錄在線用戶并測驗其是否開放21號埠
net="20.0.0."
file=/etc/ethers
[ -f /etc/ethers ] && cp -f $file $file.bak
add=1
while [ $add -le 20 ]
do
ping -c 3 -i 0.2 -w 1 ${net}${add} &> /dev/null
if [ $? -eq 0 ]
then arp -n | grep ${net}${add} | awk '{print $1,$3}' >> $file
fi
let add++
done
sort -u $file >> /root/file1.txt
target=$(awk '{print $1}' /root/file1.txt)
for ip in $target
do
wget ftp://$ip &> /dev/null 匿名下載
if [ $? -eq 0 ] 如果下載成功
then echo "$ip 主機ftp開啟"
rm -rf index.html 洗掉下載的檔案,因為每次測驗下載的都是它
fi
done
開發系統監控腳本
企業環境說明
某公司隨著業務的不斷發展,所使用的Linux服務器也越來越多,管理員希望撰寫一個簡單的性能監控腳本,放到各服務器中,當監控指標出現例外時發送告警郵件
需求描述
1.撰寫名為sysmon.sh的Shell監控腳本
2.監控內容包括CPU使用率,記憶體使用率,根磁區的磁盤占有率
3.百分比只需精確到個位,如7%,12%,23%等
4.出現以下任意情況時告警:磁盤占有率超過90%,CPU使用率超過80%,記憶體使用率超過90%,告警郵件通過mail命令發送到指定郵箱
思路與命令型別
1.分析:監控內容包括CPU使用率,內容使用率,根磁區的磁盤占有率
2.df命令
3.awk命令
4.mpstat命令(需安裝sysstat軟體包)
5.free命令
1.磁盤占有率
[root@client1 ~]# df -Th | grep '/$'
[root@client1 ~]# df -Th | grep '/$' | awk '{print $6}'
[root@client1 ~]# df -Th | grep '/$' | awk '{print $6}' | awk -F% '{print $1}'
[root@client1 ~]# disk=$(df -Th | grep '/$' | awk '{print $6}' | awk -F% '{print $1}')
2.CPU使用率
[root@client1 ~]# mpstat
[root@client1 ~]# mpstat | tail -1 | awk '{print $12}'
[root@client1 ~]# mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}
[root@client1 ~]# expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}')
[root@client1 ~]# CPU=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
3.記憶體使用率
[root@client1 ~]# free -m
[root@client1 ~]# free -m | grep "Mem:" | awk '{print $7}'
[root@client1 ~]# free -m | grep "Mem:" | awk '{print $2}'
[root@client1 ~]# expr $(free -m | grep "Mem:" | awk '{print $7}') / $(free -m | grep "Mem:" | awk '{print $2}')
[root@client1 ~]# expr $(free -m | grep "Mem:" | awk '{print $7}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}')
mem=$(expr $(free -m | grep "Mem:" | awk '{print $7}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}'))
4.組態檔
[root@client1 ~]# rpm -qa mailx
mailx-12.5-16.el7.x86_64
[root@client1 ~]# vi /etc/mail.rc
[root@client1 ~]# echo "122333" | mail -s "test" ***********@qq.com
set from=***********@qq.com 發送郵箱地址
set smtp=smtp.qq.com 郵箱使用的smtp服務器的域名
set smtp-auth-user=1609325444@qq.com smtp郵件發送時登錄的賬號
set smtp-auth-password=........ 授權碼
set smtp-auth=login smtp的狀態,登錄狀態
5.編輯配置告警腳本
[root@client1 ~]# vim sysmon.sh
[root@client1 ~]# chmod +x sysmon.sh
[root@client1 ~]# ./sysmon.sh
#!/bin/bash
# 磁盤占有率超過90%,CPU使用率超過80%,記憶體使用率超過90%告警發送郵件
disk=$(df -Th | grep '/$' | awk '{print $6}' | awk -F% '{print $1}')
CPU=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
mem=$(expr $(free -m | grep "Mem:" | awk '{print $7}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}'))
A=/root/alert.txt
B=*************@qq.com
if [ $disk -ge 90 ]
then echo "磁盤占有率超過90%" >> $A
fi
if [ $CPU -ge 80 ]
then echo "CPU使用率超過80%" >> $A
fi
if [ $mem -ge 90 ]
then echo "記憶體使用率超過90%" >> $A
fi
if [ -f $A ]
then
cat $A | mail -s "alert report" $B
rm -rf $A
fi
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/223781.html
標籤:其他
下一篇:Consul添加配置詳解
