shell脚本实例
参考:
https://blog.csdn.net/yugemengjing/article/details/82469785
1,备份日志
vim /usr/local/sh_script/logbak.sh #!/bin/bash tar -zcvf log-`date +%Y%m%d` /var/log 00 03 * * 5 /usr/local/sh_script/logbak.sh
2,监控内存和磁盘小于给定值时报警
#!/bin/bash # 实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员 disk_size = $(df / | awk '/\//{print $4}') mem_size=$(free | awk '/Mem/{print $4}') while : do # 注意内存和磁盘提取的空间大小都是以 Kb 为单位 if [ $disk_size -le 512000 -a $mem_size -le 1024000 ] then mail ‐s "Warning" root <<EOF Insufficient resources,资源不足 EOF fi done
3,检查当前登录用户
#!/bin/bash
# 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不
# 是,则提示您非管理员(使用字串对比版本)
if [ $USER == "root" ] //或者 if [$UID -eq 0]
then
yum ‐y install vsftpd
else
echo "您不是管理员,没有权限安装软件"
fi
4,编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态
#!/bin/bash # 编写脚本测试 192.168.4.0/254 整个网段中哪些主机处于开机状态,哪些主机处于关机 # 状态(for 版本) for i in {1..254} do # 每隔0.3秒ping一次,一共ping2次,并以1毫秒为单位设置ping的超时时间 ping ‐c 2 ‐i 0.3 ‐W 1 192.168.4.$i &>/dev/null if [ $? -eq 0 ];then echo "192.168.4.$i is up" else echo "192.168.4.$i is down" fi # 状态(while 版本) i=1 while [ $i -le 254 ] do ping ‐c 2 ‐i 0.3 ‐W 1 192.168.4.$i &>/dev/null if [ $? -eq 0 ];then echo "192.168.4.$i is up" else echo "192.168.4.$i is down" fi let i++ done
5,拷贝脚本显示进度条
#!/bin/bash # 编写脚本,显示进度条 jindu(){ while : do echo -n '#' sleep 0.2 done } jindu & cp -a $1 $2 killall $0 echo "拷贝完成"
6,使用死循环实时显示 eth0 网卡发送的数据包流量
#!/bin/bash while : do echo '本地网卡 eth0 流量信息如下' ifconfig eth0|grep "RX pack" |awk '{print $5}' ifconfig eth0|grep "RX pack" |awk '{print $5}' sleep 1 done