shell脚本应用(二)

一、条件测试操作
1、文件测试
(1)测试目录/media是否存在,$?返回值为0,表示存在此目录。

在这里插入图片描述
如果$?返回值非0,表示不存在此目录

在这里插入图片描述
(2)测试目录是否存在,输出结果更加直观。
输出“yes”表示该目录存在

在这里插入图片描述
无“yes”输出表示该目录不存在
在这里插入图片描述

2、整数值比较
(1)判断当前已登录的用户数,当超过5个时输出“too many”。

在这里插入图片描述

没有出现“too many” 说明没有超过5个。
(2)判断当前可用的空闲内存(buffers/cache)大小,当低于2048MB输出具体数值。

在这里插入图片描述

3、字符串比较
用户输入“yes”或“no”来确认某个任务

在这里插入图片描述

4、逻辑测试
判断当前linux系统的内核版本是否大于2.4。
查看内核
uname -r
判断
在这里插入图片描述
if条件语句
1、单分支if语句
(1)判断挂载点目录,若不存在则自动创建

在这里插入图片描述
在这里插入图片描述
(2)判断当前用户是否为root,如果不是则报错并执行“exit 1”退出脚本,不再执行其他代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、双分支if语句
(1)判断目标主机是否存活,显示检测结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)检查vsftpd服务是否运行,若运行则列出监听地址,PID号;否则输出提示“警告,vsftpd服务不可用”。(插入linux系统安装光盘,安装一下vsftpd软件包)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多分支if语句
1.根据输入的考试分数不同来区分优秀,合格,不合格三挡。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
1、编写sysmon.sh脚本
(1)使用df命令提取出根分区的磁盘占用率,赋值给变量DUG。
(2)使用mpstat命令提取CPU使用率,赋值给变量CUG。
(3)使用free命令提取出内存使用率,赋值给变量MUG。
(4)判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件。
(5)判断/tmp/alert.txt文件是否存在,若存在则作为告警邮件发送。
[root@localhost ~]# vi /root/sysmon.sh
#!/bin/bash

提取性能监控指标(磁盘占用、CPU使用、内存使用)

DUG= ( d f − h ∣ g r e p " / (df -h | grep "/ (dfhgrep"/" | awk ‘{print $5}’ | awk -F% '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲') CUG=(expr 100 - $(mpstat | tail -1 | awk ‘{print $12}’ | awk -F. '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲')) MUG=(expr $(free | grep “Mem:” | awk ‘{print $3}’) * 100 / $(free | grep “Mem:” | awk ‘{print $2}’))

设置告警日志文件、告警邮箱

ALOG="/tmp/alert.txt"
AMAIL=“root”

判断是否记录告警

if [ D U G − g t 90 ] t h e n e c h o " 磁 盘 占 用 率 : DUG -gt 90 ] then echo "磁盘占用率: DUGgt90]thenecho"DUG %" >> $ALOG
fi
if [ C U G − g t 80 ] t h e n e c h o " C P U 使 用 率 : CUG -gt 80 ] then echo "CPU使用率: CUGgt80]thenecho"CPU使CUG %" >> $ALOG
fi
if [ M U G − g t 90 ] t h e n e c h o " 内 存 使 用 率 : MUG -gt 90 ] then echo "内存使用率: MUGgt90]thenecho"使MUG %" >> $ALOG
fi

判断是否发送告警邮件,最后删除告警日志文件

if [ -f $ALOG ]
then
cat $ALOG | mail -s “Host Alert” $AMAIL
rm -rf $ALOG
fi

2、测试sysmon.sh脚本的执行情况
[root@localhost ~]# chmod +x /root/sysmon.sh
[root@localhost ~]# /root/sysmon.sh
再将脚本里80和90的数改小一些,如改为2,再次执行脚本测试。
[root@localhost ~]# /root/sysmon.sh
通过执行下面命令查看结果
[root@localhost ~]# mail

3、设置crontab计划任务
(1)确认系统服务crond已经运行。

[root@localhost ~]# systemctl status crond

绿色running 表示正在运行。
(2) 添加crontab计划任务配置,每半小时调用一次sysmon.sh脚本程序。

[root@localhost ~]# crontab –e
*/30 * * * * /root/sysmon.sh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell脚本可以用来实现网络带宽占用率的监控和统计。以下是一种可能的实现方式: 1. 使用命令行工具(如ifconfig、ip、sar等)获取网络接口的相关信息,包括接收和发送的字节数、包数等。 2. 使用定时任务(如cron)定期执行脚本,以便实时监控网络带宽占用率。 3. 计算当前时间段内的网络带宽占用率,可以通过比较前后两个时间点的数据差值来计算。 4. 将计算得到的带宽占用率输出到日志文件或者其他目标(如数据库)中,以便后续分析和查看。 下面是一个简单的示例脚本,用于实现网络带宽占用率的监控: ```shell #!/bin/bash # 获取当前时间 current_time=$(date +"%Y-%m-%d %H:%M:%S") # 获取网络接口的信息(以eth0为例) interface="eth0" rx_bytes=$(ifconfig $interface | grep "RX bytes" | awk '{print $2}' | cut -d ':' -f 2) tx_bytes=$(ifconfig $interface | grep "TX bytes" | awk '{print $6}' | cut -d ':' -f 2) # 等待一段时间(例如5秒) sleep 5 # 再次获取网络接口的信息 new_rx_bytes=$(ifconfig $interface | grep "RX bytes" | awk '{print $2}' | cut -d ':' -f 2) new_tx_bytes=$(ifconfig $interface | grep "TX bytes" | awk '{print $6}' | cut -d ':' -f 2) # 计算带宽占用率 rx_rate=$((($new_rx_bytes - $rx_bytes) / 5)) tx_rate=$((($new_tx_bytes - $tx_bytes) / 5)) # 输出结果 echo "当前时间:$current_time" echo "接收带宽占用率:$rx_rate bytes/s" echo "发送带宽占用率:$tx_rate bytes/s" ``` 请注意,以上示例脚本仅提供了一种简单的实现方式,实际应用中可能需要根据具体需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值