Shell脚本还不会写?试试这280例最常用的Shell干货脚本(最新版建议收藏)

admin 2025-12-22 04:24:22 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 这篇文章介绍了Shell脚本在Linux系统管理和自动化运维中的重要性,并提供了多个实用脚本案例,包括DOS攻击防范、日志切割、流量监控、告警发送、磁盘监控、文件管理和用户管理等。这些脚本可以帮助运维人员提高工作效率,减少重复工作,文章最后提供了获取更多Shell脚本案例的方式。 综合评分: 67 文章分类: 安全工具,系统运维,脚本开发,网络安全,实战经验


cover_image

Shell脚本还不会写?试试这280例最常用的Shell干货脚本(最新版建议收藏)

点击关注👉

马哥网络安全

2025年12月15日 17:01 河南

Shell脚本是实现Linux系统管理及自动化运维所必备的重要工具。

对于运维工程师来说,Shell脚本在减少重复工作量的同时,还能大幅提升工作效率!归根结底,shell脚本也是运维人员必备的工作技能之一。

今天给大家分享《shell脚本案例》,目录清晰,一键搜索定位,代码清晰可复制,电子版更有利于大家随时翻阅,提升实践能力想要学习、提升的朋友们一定要收藏下来。

![](https://mmbiz.qpic.cn/mmbiz_png/UkV8WB2qYAl5w5T02GNNoZuibNb96JficVbfev4Mib8w5xlwBO6eeDIolQnGKW0aMrodKChsBqj5aicX6SnbjdGL4g/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp#imgIndex=0)

扫码备注:280个shell脚本

![](https://mmbiz.qpic.cn/mmbiz_png/UkV8WB2qYAmQO922RsJH8oNVNo28hujdEqkbnrZTKI5IXibkbQGT3Es1s6wruZu9giczEsvg0Qr6G06ldEuVGFPg/640?wx_fmt=png&from=appmsg#imgIndex=1)

100%免费领取
  • Dos 攻击防范(自动屏蔽攻击 IP)
#!/bin/bashDATE=$(date +%d/%b/%Y:%H:%M)LOG_FILE=/usr/local/nginx/logs/demo2.access.logABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i ina)if(a[i]>10)print i}')for IP in $ABNORMAL_IP; doif [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; theniptables -I INPUT -s $IP -j DROPecho "$(date +'%F_%T') $IP" >> /tmp/drop_ip.logfidone
  • Nginx 访问访问日志按天切割
#!/bin/bashLOG_DIR=/usr/local/nginx/logsYESTERDAY_TIME=$(date -d "yesterday" +%F)LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m")LOG_FILE_LIST="default.access.log"for LOG_FILE in $LOG_FILE_LIST; do[ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIRmv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME}donekill -USR1 $(cat /var/run/nginx.pid)
  • 查看网卡实时流量脚本
#!/bin/bashNIC=$1echo -e " In ------ Out"while true; doOLD_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev)OLD_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev)sleep 1NEW_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev)NEW_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev)IN=$(printf "%.1f%s" "$((($NEW_IN-$OLD_IN)/1024))" "KB/s")OUT=$(printf "%.1f%s" "$((($NEW_OUT-$OLD_OUT)/1024))" "KB/s")echo "$IN $OUT"sleep 1done
  • Linux 系统发送告警脚本
# yum install mailx# vi /etc/mail.rcset [email protected] smtp=smtp.163.comset [email protected] smtp-auth-password=123456set smtp-auth=login
  • 监控 100 台服务器磁盘利用率脚本
#!/bin/bashHOST_INFO=host.infofor IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); doUSER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO)PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO)TMP_FILE=/tmp/disk.tmpssh -p $PORT $USER@$IP 'df -h' > $TMP_FILEUSE_RATE_LIST=$(awk 'BEGIN{OFS="="}/^\/dev/{print $NF,int($5)}' $TMP_FILE)for USE_RATE in $USE_RATE_LIST; doPART_NAME=${USE_RATE%=*}USE_RATE=${USE_RATE#*=}if [ $USE_RATE -ge 80 ]; thenecho "Warning: $PART_NAME Partition usage $USE_RATE%!"fidonedone
  • 将当前目录下大于 10K 的文件转移到 /tmp 目录,再按照文件大小顺序,从大到小输出文件名。
#!/bin/bash# 目标目录DIRPATH='/tmp'# 查看目录FILEPATH='.'find "$FILEPATH" -size +10k -type f | xargs -i mv {} "$DIRPATH"ls -lS "$DIRPATH" | awk '{if(NR>1) print $NF}'
  • DOS攻击防范(自动屏蔽攻击IP)
#!/bin/bashDATE=$(date +%d/%b/%Y:%H:%M)#nginx日志LOG_FILE=/usr/local/nginx/logs/demo2.access.log#分析ip的访问情况ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i ina)if(a[i]>10)print i}')for IP in $ABNORMAL_IP; doif [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; theniptables -I INPUT -s $IP -j DROPecho "$(date +'%F_%T') $IP" >> /tmp/drop_ip.logfidone
  • 批量创建多个用户并设置密码
#!/bin/bashUSER_LIST=$@USER_FILE=./user.infofor USER in $USER_LIST;doif ! id $USER &>/dev/null; thenPASS=$(echo $RANDOM |md5sum |cut -c 1-8)useradd $USERecho $PASS | passwd --stdin $USER &>/dev/nullecho "$USER $PASS" >> $USER_FILEecho "$USER User create successful."elseecho "$USER User already exists!"fidone

所有资料已经打包好了,想要提升的同学请务必拿走学习!

领取方式:

扫码备注:【280个shell脚本】

即可100%直接免费领取

仅限前100名免费领取,需要的抓点紧

![](https://mmbiz.qpic.cn/mmbiz_png/UkV8WB2qYAmQO922RsJH8oNVNo28hujdEqkbnrZTKI5IXibkbQGT3Es1s6wruZu9giczEsvg0Qr6G06ldEuVGFPg/640?wx_fmt=png&from=appmsg#imgIndex=5)

查看原文:《Shell脚本还不会写?试试这280例最常用的Shell干货脚本(最新版建议收藏)》

评论:0   参与:  3