溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

實(shí)操 : shell編程實(shí)戰(zhàn)

發(fā)布時間:2020-06-30 19:10:35 來源:網(wǎng)絡(luò) 閱讀:427 作者:wx5d8b05ec4cbc3 欄目:系統(tǒng)運(yùn)維

前言

  • mac記錄與端口掃描腳本
  • 開發(fā)系統(tǒng)監(jiān)控腳本

一 : 腳本編程步驟分享

1.1 腳本編程步驟

1.2 需求分析

  • 根據(jù)系統(tǒng)管理的需求,分析腳本要實(shí)現(xiàn)的功能、功能實(shí)現(xiàn)的層次、實(shí)現(xiàn)的命令與語句等

1.3 命令測試

  • 將要用到的命令逐個進(jìn)行測試,以決定使用的選項(xiàng)、要設(shè)置的變量等

1.4 腳本編程

  • 將測試好的命令寫入到腳本文件中,并通過各種語句將命令執(zhí)行的結(jié)果保存、判斷或者發(fā)出報警等

1.5 調(diào)試優(yōu)化

  • 對腳本進(jìn)行測試,并根據(jù)結(jié)果進(jìn)行優(yōu)化
  • 建議一遍編程一邊調(diào)試,以減少錯誤的發(fā)生

二 : mac記錄與端口掃描腳本

2.1 企業(yè)環(huán)境說明

  • 隨著業(yè)務(wù)的不斷發(fā)展,某公司所使用的Linux服務(wù)器也越來越多。在系統(tǒng)管理和維護(hù)過程中,經(jīng)常需要編寫一些使用的小腳本,以輔助運(yùn)維工作,提高工作效率

2.2 需求描述

  • 編寫名為system.sh的小腳本,記錄局域網(wǎng)中各主機(jī)的mac地址,保存到/etc/ethers文件中;若此文件已存在,應(yīng)先轉(zhuǎn)移進(jìn)行備份;每行一條記錄,第一列為ip地址,第二列為對應(yīng)的mac地址
  • 檢查有哪些主機(jī)開啟了匿名ftp服務(wù),掃描對象為/etc/ethers文件的所有ip地址,掃描的端口為21

2.3 命令測試

  • 分析:記錄局域網(wǎng)中各主機(jī)的mac地址,保存到/etc/ethers文件中;若此文件已存在,應(yīng)先轉(zhuǎn)移進(jìn)行備份;檢查有哪些主機(jī)開啟了匿名ftp服務(wù),掃描對象為/etc/ethers文件的所有ip地址,掃描的端口為21
    • arping -c 2 -w 1 -I 網(wǎng)卡名 ip地址 //發(fā)送mac地址解析請求,或者使用ping
    • arp -n 記錄mac
    • awk 打印ip與mac地址
    • 使用wget下載的方法測試ftp服務(wù)
[root@localhost ~]# arping -c 2 -w 1 -I ens33 192.168.247.134
ARPING 192.168.247.134 from 192.168.247.136 ens33
Unicast reply from 192.168.247.134 [00:0C:29:52:4D:89]  1.452ms
Unicast reply from 192.168.247.134 [00:0C:29:52:4D:89]  1.182ms
Sent 2 probes (1 broadcast(s))
Received 2 response(s)

配置ftp匿名訪問模式, 首先輸入命令“vi /etc/vsftpd/vsftpd.conf” 打開ftp服務(wù)具體配置文件

進(jìn)行修改(有點(diǎn)改,沒有的添)(去“#”號)

參數(shù) 作用
anonymous_enable=YES 允許匿名訪問模式。
anon_umask=022 匿名用戶上傳文件的umask值。
anon_upload_enable=YES 允許匿名用戶上傳文件
anon_mkdir_write_enable=YES 允許匿名用戶創(chuàng)建目錄
anon_other_write_enable=YES 允許匿名用戶修改目錄名或刪除目錄

2.4 腳本編程與調(diào)試

  • 通過arping命令發(fā)送ARP請求,使用if語句根據(jù)反饋結(jié)果記錄mac地址
  • 將網(wǎng)段地址賦值給變量,作為檢測地址的前綴
  • 使用循環(huán)語句,重復(fù)檢測目標(biāo)并記錄mac地址,主機(jī)地址為1-254
  • 通過awk命令過濾出/etc/ethers文件中的所有ip地址,賦值給變量,使用循環(huán)語句,讀取變量中的ip地址,重復(fù)探測ftp開啟情況
#!/bin/bash
#測試文件是否存在,若存在,就將當(dāng)前文件備份
[ -f /etc/ethers ]
if [ $? -eq 0 ]
then
cp -p /etc/ethers /etc/ethers.bak
fi
#去ping254個地址,將成功的ip地址和mac追加到/ethers
for ((i=134;i<=139;i++))
do
  ping -c 3 -w 3 192.168.247.$i &> /dev/null
  if [ $? -eq 0 ]
  then
  echo "192.168.247.$i 存活"
  fi
done
arp -n | grep "ether" | awk '{print $1,$3}' > /etc/ethers
#檢查是否安裝nmap掃描軟件
rpm -q nmap
if [ $? -eq 1 ]
then    
yum clean all 
yum list     
yum install nmap -y 
[ $? -eq 0 ] && echo "未安裝namp掃描工具,當(dāng)前已為您安裝"
fi
#檢查有哪些ip開啟了匿名服務(wù)ftp服務(wù),即22端口
for a in $(cat /etc/ethers | awk '{print $1}')
do
m=$(nmap -sT $a -p 21 | awk '/ftp/{print $2}')
if [ $m = open ]
then
echo "$a 開啟ftp服務(wù)"
fi
done

三 : 開發(fā)系統(tǒng)監(jiān)控腳本

3.1 企業(yè)環(huán)境說明

  • 某公司隨著業(yè)務(wù)的不斷發(fā)展,所使用的linux服務(wù)器也越來越多。管理員希望編寫一個簡單的性能監(jiān)控腳本,放到各服務(wù)器中,當(dāng)監(jiān)控指標(biāo)出現(xiàn)異常時發(fā)送告警郵件

3.2 需求描述

  • 編寫名為sysmon.sh的shell監(jiān)控腳本
  • 監(jiān)控內(nèi)容包括CPU使用率、內(nèi)存使用率、根分區(qū)的磁盤占用率
  • 百分比只精確到個位,如7%、12%、23%等
  • 出現(xiàn)以下任意情況時告警:磁盤占用率超過90%、cpu使用率超過80%、內(nèi)存使用率超過90%,告警郵件通過mail命令發(fā)送到指定郵箱
  • 結(jié)合crond服務(wù),每半個小時執(zhí)行一次監(jiān)控腳本

3.3 思路與命令測試

  • 分析:監(jiān)控內(nèi)容包括cpu使用率、內(nèi)存使用率、根分區(qū)的磁盤占用率
  • df命令
  • awk命令
  • mpstat 命令 (需安裝sysstat軟件包)
  • free命令
  • crontab命令

3.4 腳本編程與調(diào)試

  • 使用df命令提取出根分區(qū)的磁盤占用率,賦值給變量DUG
  • 使用mpstat命令提取cpu使用率,賦值給變量CUG
  • 使用free命令提取出內(nèi)存使用率,賦值給變量MUG
  • 使用if語句判斷上述監(jiān)控項(xiàng)目是否超標(biāo),將需要告警的信息保存到/tmp/alert.txt文件;若存在則作為告警郵件發(fā)送
  • 調(diào)試優(yōu)化并設(shè)置crontab計劃
#!/bin/bash
#/根分區(qū)的當(dāng)前占用率
DUG=$(df -Th | grep '/$' | awk '{print $6}' | sed  's/%//')
#cpu 的當(dāng)前空閑占用率
CUG=$(mpstat | grep 'all' | awk '{print $13}' | awk -F. '{print $1}')
#內(nèi)存當(dāng)前占用率
used=$(free | grep 'Mem' | awk '{print $3}')
total=$(free | grep 'Mem' | awk '{print $2}')
(( MUG = used*100/total))
genfenquzhanyong=當(dāng)前根磁盤占用未到警戒線20%
cpukongxian=當(dāng)前cpu空閑資源未低于警戒線1%
neicunzhanyong=當(dāng)前內(nèi)存占用未超過警戒線10%
#當(dāng)根分區(qū)占用率超過10時
if [ $DUG -gt 10 ]
then
echo `date`  >> /tmp/alert.txt
echo "當(dāng)前磁盤占用超過10%" >> /tmp/alert.txt
genfenquzhanyong='當(dāng)前根磁盤占用超過警戒線20%,為$DUG%'
fi
#當(dāng)cpu的空閑內(nèi)存小于20時
if [ $CUG -lt 1 ]
then
echo `date`  >> /tmp/alert.txt
echo "當(dāng)前cpu空閑資源小于1%" >> /tmp/alert.txt
cpukongxian='當(dāng)前cpu空閑資源低于警戒線1%,為$CUG'
fi

if [ $MUG -gt 10 ]
then
echo `date`  >> /tmp/alert.txt
echo "當(dāng)前內(nèi)存占用超過10%" >> /tmp/alert.txt
neicunzhanyong='當(dāng)前內(nèi)存占用超過警戒線10%,為$MUG'
fi
rpm -q expect
if [ $? -ne 0 ]
then
yum install expect -y
fi
echo "$genfenquzhanyong,$cpukongxian,$neicunzhanyong" | mail "965483130@qq.com"

[root@localhost ~]# crontab -e -u root
[root@localhost ~]# crontab -l
30 * * * *      /usr/bin/sh /root/sysmon.sh
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI