<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          9 個實用 shell 腳本,建議收藏!

          共 5151字,需瀏覽 11分鐘

           ·

          2022-03-18 10:00


          今天跟大家分享一下 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;?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
          ????fi
          done

          2.Linux 系統(tǒng)發(fā)送告警腳本
          #?yum?install?mailx
          #?vi?/etc/mail.rc
          [email protected]?smtp=smtp.163.com
          [email protected]?smtp-auth-password=123456
          set?smtp-auth=login

          3.MySQL 數(shù)據庫備份單循環(huán)
          #!/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;?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?備份失敗!"
          ????fi
          done

          4.MySQL 數(shù)據庫備份多循環(huán)
          #!/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;?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
          ????done
          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_DIR
          ????mv?$LOG_DIR/$LOG_FILE?$LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME}
          done

          kill?-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?"統(tǒng)計訪問最多的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?"統(tǒng)計時間段訪問最多的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?"統(tǒng)計訪問最多的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?"統(tǒng)計訪問頁面狀態(tài)碼數(shù)量"
          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;?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?1
          done

          8.服務器系統(tǒng)配置初始化腳本
          #/bin/bash
          #?設置時區(qū)并同步時間
          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;?then
          ????systemctl?stop?firewalld
          ????systemctl?disable?firewalld
          elif?egrep?"6.[0-9]"?/etc/redhat-release?&>/dev/null;?then
          ????service?iptables?stop
          ????chkconfig?iptables?off
          fi

          #
          ?歷史命令顯示操作時間
          if?!?grep?HISTTIMEFORMAT?/etc/bashrc;?then
          ????echo?'export?HISTTIMEFORMAT="%F?%T?`whoami`?"'?>>?/etc/bashrc
          fi

          #
          ?SSH超時時間
          if?!?grep?"TMOUT=600"?/etc/profile?&>/dev/null;?then
          ????echo?"export?TMOUT=600"?>>?/etc/profile
          fi

          #
          ?禁止root遠程登錄
          sed?-i?'s/#PermitRootLogin?yes/PermitRootLogin?no/'?/etc/ssh/sshd_config

          #
          ?禁止定時任務向發(fā)送郵件
          sed?-i?'s/^MAILTO=root/MAILTO=""/'?/etc/crontab

          #
          ?設置最大打開文件數(shù)
          if?!?grep?"*?soft?nofile?65535"?/etc/security/limits.conf?&>/dev/null;?then
          ????cat?>>?/etc/security/limits.conf?<????*?soft?nofile?65535
          ????*?hard?nofile?65535
          EOF
          fi

          #
          ?系統(tǒng)內核優(yōu)化
          cat?>>?/etc/sysctl.conf?<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

          #
          ?安裝系統(tǒng)性能分析工具及其他
          yum?install?gcc?make?autoconf?vim?sysstat?net-tools?iostat?if

          9.監(jiān)控 100 臺服務器磁盤利用率腳本
          #!/bin/bash
          HOST_INFO=host.info
          for?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
          ????done
          done

          轉載:我的小碗湯
          如果你覺得文章還不錯,請大家?點贊、分享、留言?下,因為這將是我持續(xù)輸出更多優(yōu)質文章的最強動力!

          老表薦書

          圖書介紹Python數(shù)據分析與可視化從入門到精通本書以“零基礎”為起點,系統(tǒng)地介紹了Python在數(shù)據處理與可視化分析方面的應用。全書共分3篇12章內容,清華大學書單推薦!學Python、練語法、取數(shù)據、畫圖表、可視化、繪地圖、重實戰(zhàn)……一書在手,精通Python數(shù)據分析與可視化!

          點擊下方卡片直接購買學習

          贈書介紹

          1>?給本文在看+點贊,掃碼加我微信,本文點贊破50后,我將在朋友圈送出1本《Python數(shù)據分析與可視化從入門到精通》。

          掃碼即可加我微信

          老表朋友圈經常有贈書/紅包福利活動

          2>?給本文留言說說你比較喜歡的linux命令或者腳本(15字以上)+點贊第一個留言且關注滿21天的讀者可以獲得贈書一本,另外我會從留言中選取2位我比較喜歡的各贈書一本。


          【注意??】近三個月內獲得贈書的讀者將無法再次獲得贈書,想要多次獲得贈書,可以查看下面的投稿規(guī)則及激勵。

          近期閱讀學習推薦

          服務器被黑客攻擊,用來挖礦!怎么辦?

          Python超好用的命令行界面實現(xiàn)工具

          Python自動化處理Excel表格實戰(zhàn)完整代碼分享(課表解析)

          如何找到我

          分享

          收藏

          點贊

          在看

          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  美国在线成人 | 青青草视频日韩视频在线 | 三级视频网站在线观看 | 欧美日韩日日夜夜 | 黄色ww|