23 个开箱即用的实用 Shell 脚本分享
https://mp.weixin.qq.com/s/uwPHOJ6GakN2QXadvCjrCQ
转载:博智互联shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的利器,是与计算机交互并管理文件和系统操作的有效方式。区区几行代码,就可以让计算机接近按照你的意图行事。
为大家整理了23个实例,通过23个实战经典脚本实例,展示了shell脚本编程的实用技术和常见工具用法。大家只需根据自己的需求,将文中这些常见任务和可移植自动化脚本推广应用到其他类似问题上,能解决那些三天两头碰上的麻烦事。
检测两台服务器指定目录下的文件一致性
#!/bin/bash
#####################################
#检测两台服务器指定目录下的文件一致性
#####################################
#通过对比两台服务器上文件的md5值,达到检测一致性的目的
dir=/data/web
b_ip=192.168.88.10
#将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中
find $dir -type f|xargs md5sum > /tmp/md5_a.txt
ssh $b_ip "find $dir -type f|xargs md5sum > /tmp/md5_b.txt"
scp $b_ip:/tmp/md5_b.txt /tmp
#将文件名作为遍历对象进行一一比对
for f in `awk '{print 2} /tmp/md5_a.txt'`
do
#以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果
if grep -qw "$f" /tmp/md5_b.txt
then
md5_a=`grep -w "$f" /tmp/md5_a.txt|awk '{print 1}'`
md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print 1}'`
#当文件存在时,如果md5值不一致则输出文件改变的结果
if [ $md5_a != $md5_b ]
then
echo "$f changed."
fi
else
echo "$f deleted."
fi
done定时清空文件内容,定时记录文件大小
检测网卡流量,并按规定格式记录在日志中
计算文档每行出现的数字个数,并计算整个文档的数字总数
杀死所有脚本
从FTP服务器下载文件
连续输入5个100以内的数字,统计和、最小和最大
用户猜数字
监测Nginx访问日志502情况,并做相应动作
假设服务器环境为lnmp,近期访问经常出现502现象,且502错误在重启php-fpm服务后消失,因此需要编写监控脚本,一旦出现502,则自动重启php-fpm服务。
将结果分别赋值给变量
批量修改文件名
把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母
1)准备测试文件,文件名为2.txt
2)脚本如下:
统计当前目录中以.html结尾的文件总大
扫描主机端口状态
用shell打印示例语句中字母数小于6的单词
输入数字运行相应命令
Expect实现SSH免交互执行命令
创建10个用户,并分别设置密码,密码要求10位且包含大小写字母以及数字,最后需要把每个用户的密码存在指定文件中
监控httpd的进程数,根据监控情况做相应处理
批量修改服务器用户密码
iptables自动屏蔽访问网站频繁的IP
根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁
判断用户输入的是否为IP地址
Last updated
Was this helpful?