9 个实用 Shell 脚本

  1. Dos 攻击防范(自动屏蔽攻击 IP)

#!/bin/bash
DATE=$(date +%d/%b/%Y:%H:%M)
LOG_FILE=/usr/local/nginx/logs/demo2.access.log
ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)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.logfi
done

2.Linux 系统发送告警脚本

# yum install mailx
# vi /etc/mail.rc
set from=baojingtongzhi@163.com smtp=smtp.163.com
set smtp-auth-user=baojingtongzhi@163.com smtp-auth-password=123456
set smtp-auth=login

3.MySQL 数据库备份单循环

#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys")for DB in $DB_LIST; doBACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sqlif ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; thenecho "$BACKUP_NAME 备份失败!"fi
done

4.MySQL 数据库备份多循环

#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys")for DB in $DB_LIST; doBACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}[ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/nullTABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null)for TABLE in $TABLE_LIST; doBACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sqlif ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; thenecho "$BACKUP_NAME 备份失败!"fidone
done

5.Nginx 访问访问日志按天切割

#!/bin/bash
LOG_DIR=/usr/local/nginx/logs
YESTERDAY_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)

6.Nginx 访问日志分析脚本

#!/bin/bash
# 日志格式: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"
LOG_FILE=$1
echo "统计访问最多的10个IP"
awk '{a[$1]++}END{print "UV:",length(a);for(v in a)print v,a[v]}' $LOG_FILE |sort -k2 -nr |head -10
echo "----------------------"echo "统计时间段访问最多的IP"
awk '$4>="[01/Dec/2018:13:20:25" && $4<="[27/Nov/2018:16:20:49"{a[$1]++}END{for(v in a)print v,a[v]}' $LOG_FILE |sort -k2 -nr|head -10
echo "----------------------"echo "统计访问最多的10个页面"
awk '{a[$7]++}END{print "PV:",length(a);for(v in a){if(a[v]>10)print v,a[v]}}' $LOG_FILE |sort -k2 -nr
echo "----------------------"echo "统计访问页面状态码数量"
awk '{a[$7" "$9]++}END{for(v in a){if(a[v]>5)print v,a[v]}}'

7.查看网卡实时流量脚本

#!/bin/bash
NIC=$1
echo -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 1
done

8.服务器系统配置初始化脚本

#/bin/bash
# 设置时区并同步时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l |grep ntpdate &>/dev/null ; then(echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab
fi# 禁用selinux
sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config# 关闭防火墙
if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; thensystemctl stop firewalldsystemctl disable firewalld
elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; thenservice iptables stopchkconfig iptables off
fi# 历史命令显示操作时间
if ! grep HISTTIMEFORMAT /etc/bashrc; thenecho 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/bashrc
fi# SSH超时时间
if ! grep "TMOUT=600" /etc/profile &>/dev/null; thenecho "export TMOUT=600" >> /etc/profile
fi# 禁止root远程登录
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config# 禁止定时任务向发送邮件
sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab# 设置最大打开文件数
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; thencat >> /etc/security/limits.conf << EOF* soft nofile 65535* hard nofile 65535
EOF
fi# 系统内核优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF# 减少SWAP使用
echo "0" > /proc/sys/vm/swappiness# 安装系统性能分析工具及其他
yum install gcc make autoconf vim sysstat net-tools iostat if

9.监控 100 台服务器磁盘利用率脚本

#!/bin/bash
HOST_INFO=host.info
for 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%!"fidone
done

9 个实用 Shell 脚本,建议收藏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【unity笔记】六、UI实现下拉列表切换视角

具体步骤如下 1. 创建UI下拉列表&#xff1a; 在Unity场景中右键点击并选择UI -> 下拉列表 来创建一个新的下拉列表。 2. 添加摄像机选项&#xff1a; 在Dropdown的Options属性中添加新的选项&#xff0c;通过点击按钮来添加选项&#xff0c;并为每个选项设置一个显示名…

广告联盟撸包小游戏app开发 现有源码案例

广告联盟小游戏APP的开发涉及多个关键步骤和要素&#xff0c;以下是一个大致的开发流程&#xff1a; 市场调研与定位&#xff1a; 深入了解目标用户群体的需求、喜好以及游戏习惯&#xff0c;这有助于确定游戏的核心功能和特色123456。 分析市场上的类似产品和广告联盟平台&a…

sourceTree 和Tortoise git软件的对比,以及使用sourceTree管理公司托管的 gitlab 项目或github项目

文章目录 Tortoisegit 和sourcetree的比较如何添加 gitlab 的社区版账号总结参考资料 Tortoisegit 和sourcetree的比较 我在 window都是用 Git 小乌龟&#xff08;Tortoise git&#xff09;来可视化管理 Git 项目。这时是不区分 Git 平台的&#xff0c;也就是不管你用的是 Git…

用Rust开发一个类似SQL Server的数据库系统的步骤和关键技术

在开发一个类似SQL Server的数据库系统时&#xff0c;选择Rust作为编程语言有许多好处&#xff0c;包括安全性、性能和并发性。本文将探讨用Rust开发这样一个系统所需的关键步骤和技术。 1. 项目规划和设计 在开始编码之前&#xff0c;需要进行详细的规划和设计&#xff1a; …

山东省专用R1快开门式压力容器操作题库(附答案)

1、【判断题】压力容器运行中的压力和温度升、降&#xff0c;都应做到缓慢进行。(  )(√) 2、【判断题】(  )压力容器升温过程中需进行热紧的系统&#xff0c;应在升温同时对容器、管道、阀门、附件等进行均匀热紧。(√) 3、【判断题】压力容器遇有紧急情况威协安全时&am…

生产看板管理系统内容有哪些?

相信很多做生产管理的朋友都会遇到如下问题&#xff0c;我就在想&#xff0c;是否能一个创建“透明的”的工作场所&#xff1f;让员工和管理者能够实时查询生产进度&#xff0c;及时发现生产中的问题。 生产进度难追踪 生产过程不透明 生产决策缺乏数据支持 ——能&#xf…

ROS CDK魔法书:点亮博客上云新技能(TypeScript篇)

引言 在数字世界的浩瀚海洋中&#xff0c;信息与数据如同戏剧中的主角&#xff0c;舞动着无形的旋律&#xff0c;构建起信息时代的交响乐。而在这其中&#xff0c;作为一位技术领域的探索者&#xff0c;你的使命便是挥舞着编码的魔杖&#xff0c;创造和守护着这些宝贵的数字灵…

【杂记-浅谈OSPF协议之LSDB链路状态数据库】

OSPF协议之LSDB链路状态数据库 一、链路状态数据库LSDB概述二、LSDB的构成三、LSDB的建立和维护四、OSPF区域划分对LSDB的影响 一、链路状态数据库LSDB概述 定义 LSDB&#xff0c;Link State Database&#xff0c;即链路状态数据库&#xff0c;是OSPF协议中的一个核心组件&…

PointCloudLib 3D对象的可视化 C++版本

0.实现效果 显示箭头 vtkOutputWindow::SetGlobalWarningDisplay(0);pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));viewer->setBackgroundColor(1, 1, 1);//添加箭头显示pcl::PointXYZ pA(0, 0, 0);pcl:…

openfeign的原理 ????

1、我们使用openfeign调用远程接口就像调用本地方法一样简单。 2、支持spring mvc 注解 3、整合了更多的扩展 &#xff08;请求重试策略、超时控制、请求拦截器&#xff09; 4、open Feign是基于aop的原理&#xff0c;他会通过所加FeignClient的接口&#xff0c;自动拼接接口…

准备篇(三)网页相关知识

Java script小脚本 - 爬取 bilibili 表情Java script 小脚本 - 爬取 bilibili 表情 随便点开一个视频,注意这个页面 URL 对应的 HTML 代码中没有表情的代码, 需要先点一下评论区,然后再在这个页面 URL 对应的元素中找到表情所在的源码。(但是我不知道这个带表情 <pic…

使用ShellHub搭建集中式SSH

SSH 是 Secure Socket Shell 或安全 shell 的缩写。这是一种加密协议&#xff0c;用于通过不安全的网络管理和创建两台计算机之间的安全通信。 SSH 还可用于指代实现 SSH 协议的实用程序套件。有多种身份验证机制&#xff0c;最常见的一种是密码身份验证&#xff0c;但也有基于…

机器学习之多模态学习FLAVA(Foundational Language and Vision Alignment)

FLAVA(Foundational Language and Vision Alignment)是Meta AI提出的一种多模态学习模型,旨在处理自然语言和视觉任务。FLAVA通过联合学习文本和图像的特征表示,实现了在多模态任务上的优异性能。 FLAVA的基本概念 多模态学习: 多模态学习涉及同时处理多种类型的数据,例…

夏老师小课堂(10)影响电机尺寸的因素(2)-电机转速的增加

点击上方 “机械电气电机杂谈 ” → 点击右上角“...” → 点选“设为星标 ★”&#xff0c;为加上机械电气电机杂谈星标&#xff0c;以后找夏老师就方便啦&#xff01;你的星标就是我更新动力&#xff0c;星标越多&#xff0c;更新越快&#xff0c;干货越多&#xff01; 关注我…

【Ant Design Vue的更新日志】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

智慧校园-后勤管理系统总体概述

在今天这个信息化飞速发展的时代&#xff0c;智慧校园后勤管理系统就像一股清新的风&#xff0c;悄悄吹走了过去校园后勤工作中的一些老难题。它就像是个超级聪明的帮手&#xff0c;用上了物联网、大数据那些听起来就很高大上的技术&#xff0c;目的很简单&#xff0c;就是让学…

PGSQL的TimescaleDB

1、查询数据库的表 SELECT table_name FROM information_schema.tables WHERE table_schema 模式名称 and "table_name" like data_010521118% 2、创建超表 先创建表&#xff1a;CREATE TABLE 表名 &#xff08;time TIMESTAMPTZ NOT NULL, 字段。。。&#xff…

JS【详解】Symbol (含Symbol 作为属性名,静态方法for 和 keyFor,11 个内置的 Symbol 值)

ES6 语法&#xff0c;表示唯一且不可变的值&#xff0c;常用作属性键值或者唯一标识符。 let a Symbol() let a Symbol(atomic symbol)console.log(Symbol() Symbol()) // false console.log(Symbol(atom) Symbol(atom)) // falseSymbol 作为属性名 let key Symbol(); le…

供应链云仓APP开发:物流行业的数字化转型

在数字化时代&#xff0c;供应链管理正经历着前所未有的变革。供应链云仓APP开发作为这一变革的关键驱动力&#xff0c;为企业提供了一个集成化、智能化的物流解决方案。本文将深入探讨供应链云仓APP开发的重要性、核心功能、开发策略以及它如何助力企业实现物流管理的现代化。…

【JavaScript脚本宇宙】揭开Node.js图像处理的秘密:图像格式转换库

轻松玩转图像处理&#xff1a;从入门到精通 前言 本文将介绍五个用于图像处理的Node.js库&#xff0c;包括Jimp、Sharp、gm、lwip和node-vibrant。这些库提供了各种功能&#xff0c;如图像格式转换、调整大小、裁剪、旋转和主色调提取等。每种库都有其独特的特点和适用场景。…