Linux下常用的Shell脚本

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 in a)if(a[i]>10)print i}’)for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c “$IP”) -eq 0 ]; then iptables -I INPUT -s $IP -j DROP echo “$(date +’%F_%T’) $IP” >> /tmp/drop_ip.log fidone


MySQL 数据库备份单循环

#!/bin/bashDATE=$(date +%F_%H-%M-%S)HOST=localhostUSER=backupPASS=123.comBACKUP_DIR=/data/db_backupDB_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; do BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; then echo “$BACKUP_NAME 备份失败!” fidone


MySQL 数据库备份多循环

#!/bin/bashDATE=$(date +%F_%H-%M-%S)HOST=localhostUSER=backupPASS=123.comBACKUP_DIR=/data/db_backupDB_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; do BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE} [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e “use $DB;show tables;” 2>/dev/null) for TABLE in $TABLE_LIST; do BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then echo “$BACKUP_NAME 备份失败!” fi donedone


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=$1echo “统计访问最多的10个IP”awk ‘{a[$1]++}END{print “UV:”,length(a);for(v in a)print v,a[v]}’ $LOG_FILE |sort -k2 -nr |head -10echo “———————-“echo “统计时间段访问最多的IP”awk ‘$4>=”[01/Dec/2018:13:20:25” && $410)print v,a[v]}}’ $LOG_FILE |sort -k2 -nrecho “———————-“echo “统计访问页面状态码数量”awk ‘{a[$7” “$9]++}END{for(v in a){if(a[v]>5)print v,a[v]}}’


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_DIR mv $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; do OLD_IN=$(awk ‘$0~”‘$NIC'”{print $2}’ /proc/net/dev) OLD_OUT=$(awk ‘$0~”‘$NIC'”{print $10}’ /proc/net/dev) sleep 1 NEW_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


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

#/bin/bash# 设置时区并同步时间ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeif ! crontab -l |grep ntpdate &>/dev/null ; then (echo “* 1 * * * ntpdate time.windows.com >/dev/null 2>&1”;crontab -l) |crontabfi# 禁用selinuxsed -i ‘/SELINUX/{s/permissive/disabled/}’ /etc/selinux/config# 关闭防火墙if egrep “7.[0-9]” /etc/redhat-release &>/dev/null; then systemctl stop firewalld systemctl disable firewalldelif egrep “6.[0-9]” /etc/redhat-release &>/dev/null; then service iptables stop chkconfig iptables offfi# 历史命令显示操作时间if ! grep HISTTIMEFORMAT /etc/bashrc; then echo ‘export HISTTIMEFORMAT=”%F %T `whoami` “‘ >> /etc/bashrcfi# SSH超时时间if ! grep “TMOUT=600” /etc/profile &>/dev/null; then echo “export TMOUT=600” >> /etc/profilefi# 禁止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; then cat >> /etc/security/limits.conf /etc/sysctl.conf < /proc/sys/vm/swappiness# 安装系统性能分析工具及其他yum install gcc make autoconf vim sysstat net-tools iostat if


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

#!/bin/bashHOST_INFO=host.infofor IP in $(awk ‘/^[^#]/{print $1}’ $HOST_INFO); do USER=$(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.tmp ssh -p $PORT $USER@$IP ‘df -h’ > $TMP_FILE USE_RATE_LIST=$(awk ‘BEGIN{OFS=”=”}/^/dev/{print $NF,int($5)}’ $TMP_FILE) for USE_RATE in $USE_RATE_LIST; do PART_NAME=${USE_RATE%=*} USE_RATE=${USE_RATE#*=} if [ $USE_RATE -ge 80 ]; then echo “Warning: $PART_NAME Partition usage $USE_RATE%!” fi donedone

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年8月20日
下一篇 2022年8月20日

相关推荐

  • 时光越老,人心越淡

    年轻的时候,我们事事都很在意,凡事都很用力。 年岁渐长,才渐渐明白,太过用力的人生,竟是一场负重前行。 作家白落梅曾说:“时光越老,人心越淡。” 凡事看淡,不急切,不慌张,内心从容…

    2022年5月4日
  • 东方国信:企业级数据平台建设方案

    来源:“鑫智奖”第四届金融数据智能优秀解决方案评选 获奖单位:北京东方国信科技股份有限公司 荣获奖项:网络影响力TOP10优秀解决方案 一、解决方案简介 基于东方国信自主研发的新一…

    2022年6月19日
  • 东体:保持高水准,申花队“12秒进攻”屡试不爽

    直播吧7月15日讯 据《东方体育日报》报道,虽然申花队是中超最“老”的球队,但申花队的快攻效率却在整个中超名列前茅。 前10场联赛,申花队总共打进了17个球,排名中超第四。在申花队…

    2022年7月21日
  • 苹果手机系统要不要升级

    你们的苹果手机有更新到最新的系统版本吗?那个系统版本最合适那个手机型号,就拿苹果12来说吧! 我个人觉得苹果12的系统版本最合适14或者15,现在16系统版本都出来,但是不建议大家…

    2022年6月19日
  • Tau Herculids或会成为近些年来最强大的流星暴

    天文学家们对5月30-31日可能出现的壮观的新流星雨感到兴奋。它是否壮观取决于地球穿越彗星轨道的时间。随着这一事件的到来,让我们来看看流星雨的前景、以往的流星暴中发生了什么等信息。…

    2022年8月16日
  • 侯耀文去世15年!49岁郭德纲作诗怀念恩师,文采斐然感人肺腑

    侯耀文大师去世十五年 “天不生他侯耀文,相声万古如长夜。” 用《庆余年》的这一句台词改编来形容侯耀文在相声界的贡献和地位,再也合适不过。 一转眼,侯耀文大师已经去世了15年。 15…

    2022年6月24日
  • 室内儿童乐园的特点是什么?

    近年来,儿童乐园产业比较热,大城市儿童游乐场的数量在不断增加。 作为一个相对较新的娱乐中心,它比较热。 很多人会选择投资当然这是一个很好的商机。 这里看看有什么特点吧! 最近娱乐中…

    2022年8月17日
  • 让你提升自我的12段话

    你的认知,决定你的命运! 1. 很少有婚姻能达到对方的预期,因为婚姻的不确定性太大,不要对婚姻有期待,就当是搭伙过日子,你会幸福很多。 2. 有些事千万不要原谅,这跟大不大度,有没…

    2022年9月1日
  • 对话 CTO:如何避免陷入管理困境

    近年来,企业数字化转型给 CTO 们带来了新的机遇和挑战。 传统意义上,CTO 通常是技术策略制定者和执行者,带领技术团队被动地为业务部门提供技术和服务支撑。 但在数字化的催动下,…

    2022年6月14日
  • 《向往的生活》开播,黄磊发现张子枫真的长大了,这番话意味深长

    时光荏苒,岁月如梭——仿佛一眨眼的功夫,《向往的生活》就已经播到了第六季。 六年的时间,很多事情都已悄然改变,哪怕当年常常用“时光荏苒”这样的词写作文的中学生,也足以长成一个大人模…

    2022年5月11日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息