<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>

          一些非常有用的 shell 腳本實例

          共 6540字,需瀏覽 14分鐘

           ·

          2022-05-14 19:20

          1. 用戶猜數(shù)字
          #!/bin/bash
          ?
          ?

          #?腳本生成一個?100?以內的隨機數(shù),提示用戶猜數(shù)字,根據(jù)用戶的輸入,提示用戶猜對了,
          #?猜小了或猜大了,直至用戶猜對腳本結束。
          ?
          #?RANDOM?為系統(tǒng)自帶的系統(tǒng)變量,值為?0‐32767的隨機數(shù)
          #?使用取余算法將隨機數(shù)變?yōu)?1‐100?的隨機數(shù)
          num=$[RANDOM%100+1]
          echo?"$num"
          ?
          #?使用?read?提示用戶猜數(shù)字
          #?使用?if?判斷用戶猜數(shù)字的大小關系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于),
          #?‐lt(小于),‐le(小于等于)
          while?:
          do?
          ?read?-p?"計算機生成了一個?1‐100?的隨機數(shù),你猜:?"?cai
          ????if?[?$cai?-eq?$num?]
          ????then
          ????????echo?"恭喜,猜對了"
          ????????exit
          ?????elif?[?$cai?-gt?$num?]
          ?????then
          ????????????echo?"Oops,猜大了"
          ???????else
          ????????????echo?"Oops,猜小了"
          ??fi
          done
          1. 查看有多少遠程的 IP 在連接本機
          #!/bin/bash
          ?

          #!/bin/bash
          #?查看有多少遠程的?IP?在連接本機(不管是通過?ssh?還是?web?還是?ftp?都統(tǒng)計)?
          ?
          #?使用?netstat?‐atn?可以查看本機所有連接的狀態(tài),‐a?查看所有,
          #?-t僅顯示?tcp?連接的信息,‐n?數(shù)字格式顯示
          #?Local?Address(第四列是本機的?IP?和端口信息)
          #?Foreign?Address(第五列是遠程主機的?IP?和端口信息)
          #?使用?awk?命令僅顯示第?5?列數(shù)據(jù),再顯示第?1?列?IP?地址的信息
          #?sort?可以按數(shù)字大小排序,最后使用?uniq?將多余重復的刪除,并統(tǒng)計重復的次數(shù)
          netstat?-atn??|??awk??'{print?$5}'??|?awk??'{print?$1}'?|?sort?-nr??|??uniq?-c
          1. hell oworld
          #!/bin/bash
          ?

          function?example?{
          echo?"Hello?world!"
          }
          example
          1. 打印 tomcat 的 pid
          #!/bin/sh`
          ?
          v1="Hello"
          v2="world"
          v3=${v1}${v2}
          echo?$v3
          ?
          pidlist=`ps?-ef|grep?apache-tomcat-7.0.75|grep?-v?"grep"|awk?'{print?$2}'`
          echo?$pidlist
          echo?"tomcat?Id?list?:$pidlist"??//顯示pid
          1. 腳本編寫剪刀、石頭、布游戲
          #!/bin/bash
          ?

          game=(石頭?剪刀?布)
          num=$[RANDOM%3]
          computer=${game[$sum]}
          ?
          ?
          echo?"請根據(jù)下列提示選擇您的出拳手勢"
          echo?"?1.?石頭"
          echo?"?2.?剪刀"
          echo?"?3.?布?"
          ?
          read?-p?"請選擇 1-3 :"?person
          case?$person?in
          1)
          ??if?[?$num?-eq?0?]
          ??then?
          ????echo?"平局"
          ????elif?[?$num?-eq?1?]
          ????then
          ??????echo?"你贏"
          ????else?
          ??????echo?"計算機贏"
          fi;;
          2)
          ?if?[?$num?-eq?0?]
          ?then
          ????echo?"計算機贏"
          ????elif?[?$num?-eq?1?]?
          ????then
          ?????echo?"平局"
          ????else?
          ??????echo?"你贏"
          fi;;
          3)
          ?if?[?$num?-eq?0?]
          ?then??
          ???echo?"你贏"
          ???elif?[?$num?-eq?1?]
          ???then?
          ?????echo?"計算機贏"
          ???else?
          ??????echo?"平局"
          fi;;
          *)
          ??echo?"必須輸入1-3?的數(shù)字"
          esac??
          1. 九九乘法表
          #!/bin/bash
          ?

          for?i?in?`seq?9`
          do?
          ?for?j?in?`seq?$i`
          ?do?
          ?echo?-n?"$j*$i=$[i*j]?"
          ?done
          ????echo
          done
          1. 腳本用源碼來安裝 memcached 服務器
          #!/bin/bash
          #?一鍵部署?memcached?
          ?
          #?腳本用源碼來安裝?memcached?服務器
          #?注意:如果軟件的下載鏈接過期了,請更新?memcached?的下載鏈接
          wget?http://www.memcached.org/files/memcached-1.5.1.tar.gz
          yum?-y?install?gcc
          tar?-xf??memcached‐1.5.1.tar.gz
          cd?memcached‐1.5.1
          ./configure
          make
          make?install
          1. 檢測本機當前用戶是否為超級管理員
          #!/bin/bash
          ?

          #?檢測本機當前用戶是否為超級管理員,如果是管理員,則使用?yum?安裝?vsftpd,如果不
          #?是,則提示您非管理員(使用字串對比版本)?
          if?[?$USER?==?"root"?]?
          then?
          ?yum?-y?install?vsftpd
          else?
          ?echo?"您不是管理員,沒有權限安裝軟件"
          fi
          1. if 運算表達式
          #!/bin/bash?-xv
          ?
          if?[?$1?-eq?2?]?;then
          ?echo?"wo?ai?wenmin"
          elif?[?$1?-eq?3?]?;then?
          ?echo?"wo?ai?wenxing?"
          elif?[?$1?-eq?4?]?;then?
          ?echo?"wo?de?xin?"
          elif?[?$1?-eq?5?]?;then
          ?echo?"wo?de?ai?"
          fi
          1. 腳本 殺掉 tomcat 進程并重新啟動
          #!/bin/bash
          ?

          #kill?tomcat?pid
          ?
          pidlist=`ps?-ef|grep?apache-tomcat-7.0.75|grep?-v?"grep"|awk?'{print?$2}'`??#找到tomcat的PID號
          ?
          echo?"tomcat?Id?list?:$pidlist"??//顯示pid
          ?
          kill?-9?$pidlist??#殺掉改進程
          ?
          echo?"KILL?$pidlist:"?//提示進程以及被殺掉
          ?
          echo?"service?stop?success"
          ?
          echo?"start?tomcat"
          ?
          cd?/opt/apache-tomcat-7.0.75
          ?
          pwd?
          ?
          rm?-rf?work/*
          ?
          cd?bin
          ?
          ./startup.sh?#;tail?-f?../logs/catalina.out
          1. 打印國際象棋棋盤
          #!/bin/bash
          #?打印國際象棋棋盤
          #?設置兩個變量,i?和?j,一個代表行,一個代表列,國際象棋為?8*8?棋盤
          #?i=1?是代表準備打印第一行棋盤,第?1?行棋盤有灰色和藍色間隔輸出,總共為?8?列
          #?i=1,j=1?代表第?1?行的第?1?列;i=2,j=3?代表第?2?行的第?3?列
          #?棋盤的規(guī)律是?i+j?如果是偶數(shù),就打印藍色色塊,如果是奇數(shù)就打印灰色色塊
          #?使用?echo?‐ne?打印色塊,并且打印完成色塊后不自動換行,在同一行繼續(xù)輸出其他色塊
          for?i?in?{1..8}
          do
          ???for?j?in?{1..8}
          ???do
          ????sum=$[i+j]
          ??if?[??$[sum%2]?-eq?0?];then
          ????echo?-ne?"\033[46m??\033[0m"
          ??else
          ???echo?-ne?"\033[47m??\033[0m"
          ??fi
          ???done
          ???echo
          done
          1. 統(tǒng)計當前 Linux 系統(tǒng)中可以登錄計算機的賬戶有多少個
          #!/bin/bash
          ?

          #?統(tǒng)計當前?Linux?系統(tǒng)中可以登錄計算機的賬戶有多少個
          #方法?1:
          grep?"bash$"?/etc/passwd?|?wc?-l
          #方法 2:
          awk?-f?:?'/bash$/{x++}end{print?x}'?/etc/passwd
          1. 備份mysql表數(shù)據(jù)
          #!/bin/sh
          ?

          source?/etc/profile
          dbName=mysql
          tableName=db
          echo?[`date?+'%Y-%m-%d?%H:%M:%S'`]'?start?loading?data...'
          mysql?-uroot?-proot?-P3306?${dbName}?-e?"LOAD?DATA?LOCAL?INFILE?'#?/home/wenmin/wenxing.txt'?INTO?TABLE?${tableName}?FIELDS?TERMINATED?BY?';'"
          echo?[`date?+'%Y-%m-%d?%H:%M:%S'`]'?end?loading?data...'
          exit
          EOF
          1. 使用死循環(huán)實時顯示 eth0 網(wǎng)卡發(fā)送的數(shù)據(jù)包流量
          #!/bin/bash
          ?

          #?使用死循環(huán)實時顯示?eth0?網(wǎng)卡發(fā)送的數(shù)據(jù)包流量?
          ?
          while?:
          do?
          ?echo?'本地網(wǎng)卡 ens33 流量信息如下:?'
          ?ifconfig?ens33?|?grep?"RX?pack"?|?awk?'{print?$5}'
          ?????ifconfig?ens33?|?grep?"TX?pack"?|?awk?'{print?$5}'
          ?sleep?1
          done
          1. 編寫腳本測試 192.168.4.0/24 整個網(wǎng)段中哪些主機處于開機狀態(tài),哪些主機處于關機
          #!/bin/bash
          ?

          #?編寫腳本測試?192.168.4.0/24?整個網(wǎng)段中哪些主機處于開機狀態(tài),哪些主機處于關機
          #?狀態(tài)(for?版本)
          for?i?in?{1..254}
          do?
          ?#?每隔0.3秒ping一次,一共ping2次,并以1毫秒為單位設置ping的超時時間
          ?ping?-c?2?-i?0.3?-W?1?192.168.1.$i?&>/dev/null
          ?????if?[?$??-eq?0?];then
          ?echo?"192.168.1.$i?is?up"
          ?else?
          ?echo?"192.168.1.$i?is?down"
          ?fi
          done
          1. 編寫腳本:提示用戶輸入用戶名和密碼,腳本自動創(chuàng)建相應的賬戶及配置密碼。如果用戶
          #!/bin/bash
          #?編寫腳本:提示用戶輸入用戶名和密碼,腳本自動創(chuàng)建相應的賬戶及配置密碼。如果用戶
          #?不輸入賬戶名,則提示必須輸入賬戶名并退出腳本;如果用戶不輸入密碼,則統(tǒng)一使用默
          #?認的 123456 作為默認密碼。
          ?
          read?-p?"請輸入用戶名:?"?user
          #使用‐z?可以判斷一個變量是否為空,如果為空,提示用戶必須輸入賬戶名,并退出腳本,退出碼為?2
          #沒有輸入用戶名腳本退出后,使用$?查看的返回碼為?2
          if?[?-z?$user?];?then
          ?echo?"?您不需要輸入賬戶名"?
          ?exit?2
          fi?
          #使用?stty?‐echo?關閉?shell?的回顯功能
          #使用?stty??echo?打開?shell?的回顯功能
          stty?-echo?
          read?-p?"請輸入密碼:?"?pass
          stty?echo?
          pass=${pass:-123456}
          useradd?"$user"
          echo?"$pass"?|?passwd?--stdin?"$user"
          1. 使用腳本對輸入的三個整數(shù)進行排序
          #!/bin/bash
          ?

          #?依次提示用戶輸入?3?個整數(shù),腳本根據(jù)數(shù)字大小依次排序輸出?3?個數(shù)字
          read?-p?"?請輸入一個整數(shù):?"?num1
          read?-p?"?請輸入一個整數(shù):?"?num2
          read?-p?"?請輸入一個整數(shù):??"?num3
          ?
          #?不管誰大誰小,最后都打印?echo?"$num1,$num2,$num3"
          #?num1?中永遠存最小的值,num2?中永遠存中間值,num3?永遠存最大值
          #?如果輸入的不是這樣的順序,則改變數(shù)的存儲順序,如:可以將?num1?和?num2?的值對調
          tmp=0
          #?如果?num1?大于?num2,就把?num1?和和?num2?的值對調,確保?num1?變量中存的是最小值
          if?[?$num1?-gt?$num2?];then
          ?tmp=$num1
          ?num1=$num2
          ?num2=tmp
          fi
          #?如果?num1?大于?num3,就把?num1?和?num3?對調,確保?num1?變量中存的是最小值
          if?[?$num1?-gt?$num3?];then
          ?tmp=$num1
          ?num1=$num3
          ?num3=$tmp
          fi
          #?如果?num2?大于?num3,就把?num2?和?num3?對調,確保?num2?變量中存的是最小值
          if?[?$num2?-gt?$num3?];then
          ?tmp=$num2
          ?num2=$num3
          ?num3=$tmp
          fi
          echo?"排序后數(shù)據(jù)(從小到大)為:$num1,$num2,$num3"
          1. 根據(jù)計算機當前時間,返回問候語,可以將該腳本設置為開機啟動
          #!/bin/bash
          #?根據(jù)計算機當前時間,返回問候語,可以將該腳本設置為開機啟動?
          ?
          #?00‐12?點為早晨,12‐18?點為下午,18‐24?點為晚上
          #?使用?date?命令獲取時間后,if?判斷時間的區(qū)間,確定問候語內容
          tm=$(date?+%H)
          if?[?$tm?-le?12?];then
          ?msg="Good?Morning?$USER"
          elif?[?$tm?-gt?12?-a?$tm?-le?18?];then
          ???msg="Good?Afternoon?$USER"
          else
          ???msg="Good?Night?$USER"
          fi
          echo?"當前時間是:$(date?+"%Y‐%m‐%d?%H:%M:%S")"
          echo?-e?"\033[34m$msg\033[0m"
          1. 將 I lov cls 寫入到 txt 文件中
          #!/bin/bash
          ?

          cd?/home/wenmin/
          touch?wenxing.txt
          echo?"I?lov?cls"?>>wenxing.txt
          1. 腳本編寫 for 循環(huán)判斷
          #!/bin/bash
          ?

          s=0;
          for((i=1;i<100;i++))
          do?
          ?s=$[$s+$i]
          done?
          ?
          echo?$s
          ?
          r=0;
          a=0;
          b=0;
          for((x=1;x<9;x++))
          do?
          ?a=$[$a+$x]?
          echo?$x
          done
          for((y=1;y<9;y++))
          do?
          ?b=$[$b+$y]
          echo?$y
          ?
          done
          ?
          echo?$r=$[$a+$b]
          1. 腳本編寫 for 循環(huán)判斷
          #!/bin/bash
          ?

          for?i?in?"$*"
          do?
          ?echo?"wenmin?xihuan?$i"
          done
          ?
          for?j?in?"$@"
          do?
          ?echo?"wenmin?xihuan?$j"
          done
          1. 腳本 ?每周 5 使用 tar 命令備份/var/log 下的所有日志文件
          #!/bin/bash
          #?每周?5?使用?tar?命令備份/var/log?下的所有日志文件
          #?vim??/root/logbak.sh
          #?編寫備份腳本,備份后的文件名包含日期標簽,防止后面的備份將前面的備份數(shù)據(jù)覆蓋
          #?注意?date?命令需要使用反引號括起來,反引號在鍵盤鍵上面
          ?
          tar?-czf?log-`date?+%Y%m%d`.tar.gz?/var/log?
          ?
          #?crontab?-e?#編寫計劃任務,執(zhí)行備份腳本
          00?03?*?*?5?/home/wenmin/datas/logbak.sh
          1. 腳本編寫 求和 函數(shù)運算 function xx()
          #!/bin/bash
          ?

          function?sum()
          {
          ?s=0;
          ?s=$[$1+$2]
          ?echo?$s
          }
          read?-p?"input?your?parameter?"?p1
          read?-p?"input?your?parameter?"?p2
          ?
          sum?$p1?$p2
          ?
          ?
          function?multi()
          {
          ?r=0;
          ?r=$[$1/$2]
          ?echo?$r
          }
          read?-p?"input?your?parameter?"?x1
          read?-p?"input?your?parameter?"?x2
          ?
          multi?$x1?$x2
          ?
          v1=1
          v2=2
          let?v3=$v1+$v2
          echo?$v3
          1. 腳本編寫 ?case ?-- esac 分支結構表達式
          #!/bin/bash?
          ?

          case?$1?in?
          1)?
          ?echo?"wenmin?"
          ;;
          2)
          ?echo?"wenxing?"
          ;;?
          3)??
          ?echo?"wemchang?"
          ;;
          4)?
          ?echo?"yijun"
          ;;
          5)
          ?echo?"sinian"
          ;;
          6)??
          ?echo?"sikeng"
          ;;
          7)?
          ?echo?"yanna"
          ;;
          *)
          ?echo?"danlian"
          ;;?
          esac
          1. 定義要監(jiān)控的頁面地址,對 tomcat 狀態(tài)進行重啟或維護
          #!/bin/sh??
          #?function:自動監(jiān)控tomcat進程,掛了就執(zhí)行重啟操作??
          #?author:huanghong??
          #?DEFINE??
          ??????
          #?獲取tomcat?PPID??
          TomcatID=$(ps?-ef?|grep?tomcat?|grep?-w?'apache-tomcat-7.0.75'|grep?-v?'grep'|awk?'{print?$2}')??
          ??????
          #?tomcat_startup??
          StartTomcat=/opt/apache-tomcat-7.0.75/bin/startup.sh??
          ??????
          ??????
          #TomcatCache=/usr/apache-tomcat-5.5.23/work??
          ??????
          #?定義要監(jiān)控的頁面地址??
          WebUrl=http://192.168.254.118:8080/
          ??????
          #?日志輸出??
          GetPageInfo=/dev/null??
          TomcatMonitorLog=/tmp/TomcatMonitor.log??
          ??????
          Monitor()??
          ??{??
          ???echo?"[info]開始監(jiān)控tomcat...[$(date?+'%F?%H:%M:%S')]"??
          ???if?[?$TomcatID?]
          ?then??
          ??????echo?"[info]tomcat進程ID為:$TomcatID."??
          ??????#?獲取返回狀態(tài)碼??
          ??????TomcatServiceCode=$(curl?-s?-o?$GetPageInfo?-m?10?--connect-timeout?10?$WebUrl?-w?%{http_code})??
          ??????if?[?$TomcatServiceCode?-eq?200?];then??
          ??????????echo?"[info]返回碼為$TomcatServiceCode,tomcat啟動成功,頁面正常."??
          ??????else??
          ??????????echo?"[error]訪問出錯,狀態(tài)碼為$TomcatServiceCode,錯誤日志已輸出到$GetPageInfo"??
          ??????????echo?"[error]開始重啟tomcat"??
          ??????????kill?-9?$TomcatID??#?殺掉原tomcat進程??
          ??????????sleep?3??
          ??????????#rm?-rf?$TomcatCache?#?清理tomcat緩存??
          ??????????$StartTomcat??
          ??????fi??
          ??????else??
          ??????echo?"[error]進程不存在!tomcat自動重啟..."??
          ??????echo?"[info]$StartTomcat,請稍候......"??
          ??????#rm?-rf?$TomcatCache??
          ??????$StartTomcat??
          ????fi??
          ????echo?"------------------------------"??
          ???}??
          ???Monitor>>$TomcatMonitorLog??
          1. 通過位置變量創(chuàng)建Linux 系統(tǒng)賬戶及密碼
          #!/bin/bash
          ?

          #?通過位置變量創(chuàng)建Linux?系統(tǒng)賬戶及密碼
          ?
          #?$1?是執(zhí)行腳本的第一個參數(shù),$2??是執(zhí)行腳本的第二個參數(shù)
          ?
          useradd?"$1"
          echo?"$2"?|?passwd?--stdin?"$1"
          1. 對變量的傳入與獲取個數(shù)及打印
          #!/bin/bash
          echo?"$0?$1?$2?$3"??//?傳入三個參數(shù)
          echo?$#????//獲取傳入?yún)?shù)的數(shù)量
          echo?$@????//打印獲取傳入?yún)?shù)
          echo?$*????//打印獲取傳入?yún)?shù)
          1. 實時監(jiān)控本機內存和硬盤剩余空間,剩余內存小于 500M、根分區(qū)剩余空間小于 1000M 時,發(fā)送報警郵件給 root 管理員
          #!/bin/bash
          ?

          #?實時監(jiān)控本機內存和硬盤剩余空間,剩余內存小于500M、根分區(qū)剩余空間小于1000M時,發(fā)送報警郵件給root管理員
          ?
          #?提取根分區(qū)剩余空間
          disk_size=$(df?/?|?awk?'/\//{print?$4}')
          ?
          #?提取內存剩余空空間
          mem_size=$(free?|?awk?'/Mem/{print?$4}')
          while?:
          do?
          #?注意內存和磁盤提取的空間大小都是以?Kb?為單位
          if??[??$disk_size?-le?512000?-a?$mem_size?-le?1024000??]
          then
          ????mail??‐s??"Warning"??root??<?Insufficient?resources,資源不足
          EOF
          fi
          done
          1. 檢查指定目錄下是否存在對應文件
          #!/bin/bash
          ?

          if?[?-f?/home/wenmin/datas?]
          then?
          echo?"File?exists"
          fi
          1. 腳本定義 while 循環(huán)語句
          #!/bin/bash
          ?

          if?[?-f?/home/wenmin/datas?]
          then?
          echo?"File?exists"
          fi
          ?
          [root@rich?datas]#?cat?while.sh?
          #!/bin/bash
          ?

          s=0
          i=1
          while?[?$i?-le?100?]
          do
          ????????s=$[$s?+?$i]
          ????????i=$[$i?+?1]
          done
          ?
          echo?$s
          echo?$i?
          1. 一鍵部署 LNMP(RPM 包版本)
          #!/bin/bash?
          ?

          #?一鍵部署?LNMP(RPM?包版本)
          #?使用?yum?安裝部署?LNMP,需要提前配置好?yum?源,否則該腳本會失敗
          #?本腳本使用于?centos7.2?或?RHEL7.2
          yum?-y?install?httpd
          yum?-y?install?mariadb?mariadb-devel?mariadb-server
          yum?-y?install?php?php-mysql
          ?
          systemctl?start?httpd?mariadb
          systemctl?enable?httpd?mariadb
          1. 讀取控制臺傳入?yún)?shù)
          #!/bin/bash
          read?-t?7?-p?"input?your?name?"?NAME
          echo?$NAME
          ?
          read?-t?11?-p?"input?you?age?"?AGE
          echo?$AGE
          ?
          read?-t?15?-p?"input?your?friend?"?FRIEND
          echo?$FRIEND
          ?
          read?-t?16?-p?"input?your?love?"?LOVE
          echo?$LOVE
          1. 腳本實現(xiàn) 復制
          #!/bin/bash
          ?

          cp?$1?$2?
          1. 腳本實現(xiàn)文件存在與否的判斷
          #!/bin/bash
          ?

          if?[?-f?file.txt?];then
          ?echo?"文件存在"
          else?
          ?echo?"文件不存在"
          fi

          鏈接:https://blog.csdn.net/weixin_42405670/article/details/89818462

          (版權歸原作者所有,侵刪)


          瀏覽 19
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  波多野吉衣毛片 | 亚洲无码专区在线观看 | 大骚逼视频 | 一级a一级a爱片免费视频 | 久久亚洲综合色 |