21 个非常实用的 Shell 拿来就用脚本实例
1.检测两台服务器指定目录下的文件一致性
#!/usr/bin/env bash
######################################
# 检测两台服务器指定目录下的文件一致性
######################################
# 通过对比两台服务器文件的 MD5值,达到检测一致性的目的
DIR=/data/web
B_IP=192.168.1.134
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
done2.定时清空文件内容,定时记录文件大小
3.检测网卡流量,并按规定格式记录在日志中
4.计算文档每行出现的数字个数,并计算整个文档的数字总数
5.从FTP服务器下载文件
6.连续输入5个100以内的数字,统计和、最小和最大
7.监测Nginx访问日志502情况,并做相应动作
8.将结果分别赋值给变量
9.批量修改文件名
10.把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母
11.统计当前目录中以.html结尾的文件总大
12.扫描主机端口状态
13.用shell打印示例语句中字母数小于6的单词
14.输入数字运行相应命令
15.创建10个用户,并分别设置密码,密码要求10位且包含大小写字母以及数字,最后需要把每个用户的密码存在指定文件中
16.监控httpd的进程数,根据监控情况做相应处理
17. 批量修改服务器用户密码
18.iptables自动屏蔽访问网站频繁的IP
屏蔽每分钟每分钟访问超过200的IP
19.屏蔽每分钟SSH尝试登录超过10次的IP
20.根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁
21.判断用户输入的是否为IP地址
22.统计 /proc 目类下 Linux 进程相关数量信息,输出总进程数,running 进程数,stoped 进程数,sleeing 进程数,zombie 进程数。
23.查找 80 端口请求数最高的前 20 个 IP 地址,判断中间最小的请求数是否大于 500,如大于 500,则输出系统活动情况报告到 alert.txt,如果没有,则在 600s 后重试,直到有输出为止。
Last updated