一、MAC记录与端口扫描脚本
1.需求描述
-
编写名为 system.sh 的小脚本,记录局域网中各主机的 MAC 地址,保存到/etc/ethers 文件中;若此文件已存在,应先转移进行备份;每行一条记录,第 1 列为 IP 地址,第 2 列为对应的 MAC 地址。
-
检查有哪些主机开启了匿名 FTP 服务,扫描对象为/etc/ethers 文件中的所有 IP 地址, 扫描的端口为 21。
2、命令测试
- 分析:记录局域网中各主机的MAC地址,保存到/etc/ethers文件中;若此文件已存在,应先转移进行备份;检查有哪些主机开启了匿名FTP服务,扫描对象为/etc/ethers文件中的所有IP地址,扫描的端口为21
- arping - c2-w 1ip :发送MAC地址解析请求
- arp-n : 纪录MAC
- awk : 打印ip与MAC地址
- 使用wget下载的方法测试FTP服务
3.实现步骤
vim
#!/bin/bash
if [ -e /etc/ethers ]
then
echo "文件已存在"
cp /etc/ethers /etc/ethers.bak
fi
for((i=120;i<180;i++))
do
ping -c 3 -i 0.2 -w 2 192.168.220.$i &>/dev/null
if [ $? -eq 0 ] ; then
arp -n | grep "192.168.220.*" | awk '{print $1,$3}' | sed '/ens33/d' > /etc/ethers
fi
done
rpm -q nmap &>/dev/null
if [ $? -eq 0 ]
then
echo "nmap已安装"
else
echo "nmap未安装"
yum install -y nmap &>/dev/null
fi
host=$(cat /etc/ethers | awk '{print $1}')
echo "以下主机开启ftp服务:"
for iP in $host
do
nmap -sT $iP | grep "21/tcp" &>/dev/null
if [ $? -eq 0 ]
then
echo "$iP"
fi
done
二、 开发系统监控脚本
1.需求描述
-
编写名为 sysmon.sh 的 Shell 监控脚本。
-
监控内容包括 CPU 使用率、内存使用率、根分区的磁盘占用率。
-
百分比只需精确到个位,如 7%、12%、23%等。
-
出现以下任一情况时告警:磁盘占用率超过 90%、CPU 使用率超过 80%、内存使用率超过 90%,告警邮件通过 mail 命令发送到指定邮箱。
-
结合 crond 服务,每半小时执行一次监控脚本。
2、思路与命令测试
- 分析:监控内容包括CPU使用率、内存使用率、根分区的磁盘占用率
- df命令
- awk命令
- mpstat 命令(需安装sysstat软件包)
- free命令
- crontab命令
- 使用i语句判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件;若该存在则作为告警邮件发送
- 调试优化并设置crontab计划
3.实现步骤
[root@localhost ~]# vi /root/sysmon.sh
#!/bin/bash
DUG=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}')
CUG=$(mpstat | grep "all" | awk '{print $4}' | awk -F. '{print $2}')
MUG=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
\# 设置告警日志文件、告警邮箱
ALOG="/tmp/alert.txt"
AMAIL="root@localhost"
\# 判断是否记录告警
if [ $DUG -gt 90 ]
then
echo "磁盘占用率:$DUG %" >> $ALOG
fi
if [ $CUG -gt 80 ]
then
echo "CPU 使用率:$CUG %" >> $ALOG
fi
if [ $MUG -gt 90 ]
then
echo "内存使用率:$MUG %" >> $ALOG
fi
\# 判断是否发送告警邮件,最后删除告警日志文件
if [ -f $ALOG ]
then
cat $ALOG | mail -s "Host Alert" $AMAIL
rm -rf $ALOG
fi
[root@localhost ~]# chmod +x /root/sysmon.sh
(2)测试 sysmon.sh 脚本的执行情况
首先确认有可用的邮件服务器(如 Postfix、Sendmail 等),然后调低监控阈值,执行 sysmon.sh 脚本进行测试。
[root@localhost ~]# **/root/sysmon.sh**
然后查收 root@localhost 的邮箱,确认告警邮件内容。
[root@localhost ~]$ mail
(3)设置 crontab 计划任务
首先确认系统服务 crond 已经运行。
[root@localhost ~]# /etc/init.d/crond status
crond (pid 5839) 正在运行...
然后,添加 crontab 计划任务配置,每半小时调用一次 sysmon.sh 脚本程序。
[root@localhost ~]# **crontab -e**
*/30 * * * * /root/sysmon.sh