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
done

2.定时清空文件内容,定时记录文件大小

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