linux shell指令碼神一般的測試案例

來源:互聯網
上載者:User

標籤:

本人對shell指令碼一點都不瞭解,工作中用到了shell指令碼,所有就只能趕鴨子上架,搜度娘一點一點的寫了。在搜尋的過程中看到了比較好的案例。大家可以參考一下。以後肯定可以用的到。

聲明本文轉載至 http://www.educity.cn/linux/1241314.html

指令碼1:為root使用者編寫登入歡迎指令碼:

  1、用vi命令在/root目錄是建立一個指令檔welcome.sh,內容如下:

  

  2、使用chmod命令給welcome.sh檔案增加執行(x)許可權

  3、修改/root/.bash_profile檔案,在root使用者每次登入系統時調用welcome.sh指令碼程式

  #vi /root/.bash_profile添加如下內容:

  

  4、驗證:使用root使用者重新登入,驗證歡迎指令碼的輸出資訊

  指令碼2:編寫指令碼程式,用來啟動、停止和顯示系統服務狀態:

  1、用vi命令在/root/bin目錄是建立一個指令檔status用來查看crond服務的狀態,內容如下:

  

  設定x許可權

  指令檔stop和start與status類似,稍作修改即可。

  指令碼3:編寫健全狀態監控指令碼/opt/monitor.sh,用於記錄CPU負載、記憶體和交換空間、磁碟空間、最近的使用者登入情況等資訊,以及當時的時間資訊。

  1、用vi命令在/opt目錄是建立一個指令檔monitor.sh,內容如下:

  #!/bin/bash

  mkdir -p /var/log/runrec

  RecFile="/var/log/runrec/running.today"

  RecTime=`date  +"%Y-%m-%d %H:%M"`

  LoadRec=`uptime`

  MemRec=`free -m`

  DiskRec=`df -hT`

  LastLoginRec=`last -n 20`

  echo"++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  Record Time: $RecTime

  cpu Load information:$LoadRec

  Memory information:$MemRec

  Disk Usage information:$DiskRec

  Last login 20 users record:$LastLoginRec">> $RecFile

  2、使用chmod命令給monitor.sh檔案增加執行(x)許可權

  3、測試指令碼是否能正常運行及輸出正確資訊

  4、設定計劃任務,要求每隔15分鐘執一次monitor.sh指令碼,並確認crond服務已啟動。

  建立計劃任務:

  #crontab –e   內容如下

  */15 * * * */opt/monitor.sh

  查看crond服務狀態並設定crond開機自動起動。

  #service crondstatus

  #chkconfig--level 35 crond on

  指令碼1:編寫SHELL指令碼監控主機

  1、用vi命令在/root目錄是建立一個指令檔sysmon.sh,內容如下:

  

  附:

  a:使用df命令提取根分區的磁碟佔用率:如所示:

  使用df  -h命令查看磁碟分割的使用方式,其中根分區的已用空間是10%

  

  用如中的命令可以過濾磁碟的已用空間

  

  b:使用mpstat命令提取CPU使用率(要確保sysstat軟體包已安裝)。如所示:其中%idle表示CPU空閑時間百分比

  

  用如中的命令可以得到CPU已用空間並賦值給變數CUG

  

  c:使用free命令查看記憶體的使用方式。其中劃紅線的表示空餘記憶體。

  

  用如中的命令可以得到記憶體使用量率並賦值給變數MUG

  

  2、使用chmod命令給sysmon.sh檔案增加執行(x)許可權

  3、測試sysmon.sh指令碼的執行情況

  a:配置DNS服務負責解析郵件伺服器的MX和A記錄

  b:修改/etc/nf檔案指向DNS伺服器位址

  c:配置郵件伺服器

  如果是postfix伺服器,配置如下:

  

  修改main.cf檔案,修改後內容如下:

  

  重啟postfix服務。並發測試郵件。

  d:確認有可用的郵件伺服器,然後調低監控閾值,執行sysmon.sh指令碼進行測試

  e:查收名為的郵箱,確認警告郵件內容

  

  郵件內容如下:

  

  4、設定crontab計劃任務,每隔半小調用一次sysmon.sh指令碼程式

  

  重新啟動crond服務。

  指令碼2:編寫SHELL指令碼(mkbak.sh)提示使用者指定備份目錄的路徑,若目錄已存則顯示提示資訊後跳過,否則顯示相應資訊後建立該目錄。

  

  指令碼3:編寫指令碼程式(chkdbsvr.sh)用於每隔5分監視一次系統服務mysqld的運行狀態,若發現mysqld進程已經停止,則在/var/log/messages檔案中追加寫入日誌資訊(包括當時時間),並重啟mysqld服務;否則不進行任何操作

  

  指令碼4:編寫指令碼程式用於監視系統服務httpd的運行狀態,要求如下

  當服務狀態失常時在"/var/log/htmon.log"檔案中記入日誌資訊。

  自動將狀態失常的httpd服務重新啟動。若重啟httpd服務失敗,測嘗試重新啟動伺服器主機

  結合crond計劃任務,每周一至周五每隔15分鐘執行一次監測任務

  1、在/opt目錄中建立指令碼htmon.sh,指令碼內容如下

  #! /bin/bash

  /sbin/service httpdstatus &> /dev/null

  if [ $? -ne 0 ] ; then

  echo "`date`" >> /var/log/htmon.log

  /sbin/service httpd restart

  /sbin/service httpd status &>/dev/null

  if [ $? -ne 0 ] ; then

  /sbin/chkconfig --level 2345 httpd on

  /sbin/shutdown -r now

  fi

  fi

  2、建立crontab計劃任務

  */15 * * * * /opt/htmon.sh

  指令碼1:編寫一個名為getarp.sh的指令碼,記錄區域網路中各個主機的MAC地址。儲存到/etc/ether檔案中,若此檔案已存在,應先進行備份。第行一條記錄,第1列為IP地址,第2列為對應的MAC地址。

  分析:

  假定要掃描的網段是192.168.4.0,將192.168.4.賦值給變數NADD,作為檢測地址的首碼

  使用”arping  -c 2 -w 1 被檢測主機的IP”命令發送ARP請求,記錄MAC地址

  

  用while迴圈語句檢測目標主並記錄MAC地址,這裡檢測的主機地址為2~3

  1、用vi建立一個名為getarp.sh指令碼,內容如下:

  #!/bin/bash

  NADD="192.168.4."

  FILE="/etc/ethers"

  [-f $FILE ] && /bin/cp -f $FILE $FILE.old

  HADD=1

  while[ $HADD -lt 4 ]

  do

  arping -c 2 -w 1 ${NADD}${HADD} &>/dev/null

  if [ $? -eq 0 ] ; then

  arp -n | grep ${NADD}${HADD} | awk ‘{print$1,$3}‘ >> $FILE

  fi

  let HADD++

  done

  2、給指令碼getarp.sh增加x許可權

  3、執行指令碼,查看檢測到的MAC資訊

  指令碼2:編寫一個指令碼scanhost.sh,檢查有哪些主機開啟了匿名FPT服務,掃描對象為/etc/ethers檔案中的所有IP地址,掃描的連接埠號碼為21

  環境描述:假定192.168.4.2主機為匿名訪問的FTP。 192.168.4.3非匿名訪部的FTP。

  建立掃描檔案/etc/ethers,內容如下:

  

  這裡採用wget下載工具:wget ftp://IP/

  1、用vi建立一個名為scanhost.sh指令碼,內容如下:

  #!/bin/bash

  TARGET=$(awk‘{print $1}‘ /etc/ethers)

  echo"follow is anonymous FTP server:"

  forIP in $TARGET

  do

  wget –T 3  -t 3 ftp://$IP/ &> /dev/null

  if [ $? -eq 0 ] ; then

  echo $IP

  fi

  done

  參數提示:-T 連線逾時時間;-t 串連重試次數

  2、給指令碼getarp.sh增加x許可權

  3、執行指令碼,查看掃描到的資訊

  指令碼3:計算/etc/目錄中所有nf設定檔所佔用的總空間大小

  用vi建立一個名為confsize.sh指令碼,內容如下:

  #!/bin/bash

  sizenums=$(ls-l $(find /etc/ -type f -a -name nf) | awk ‘{print $5}‘)

  total=0

  fori in $sizenums

  do

  total=$(expr $total + $i)

  done

  echo"total size of conf files: $total bytes."

  指令碼4:編寫一個指令碼chkfileown.sh,對於使用bash作為登入shell的系統中,檢查他們在/opt目錄中的檔案數量並列出具體的數值及對應的使用者賬戶

  1、用vi建立一個名為chkfileown.sh指令碼,內容如下:

  #!/bin/bash

  DIR="/opt/"

  validusers=$(grep"bash$" /etc/passwd | awk -F: ‘{print $1}‘)

  forusername in $validusers

  do

  num=$(find $DIR -user $username | wc -l)

  echo "$username have $num files."

  done

  2、給指令碼getarp.sh增加x許可權

  3、執行指令碼,查看執行後的資訊(注:/opt目錄下若沒有任何檔案,可事先建立一些測試檔案)

  指令碼5:編寫指令碼用於大量新增使用者,要求如下:

  要求提供互動功能,當管理員執行該指令碼時,可以根據提示指定需添加的使用者數量(少於100)、使用者名稱首碼、並能夠設定這些使用者賬戶的失效時間,初始密碼。

  使用者名稱編號統一使用兩位元,如使用”01”、”02”、”03”的形式,而不是”1”、”2”、”3”的形式。

  編寫對應的批量刪節除使用者指令碼,要能夠通過命令列參數指定使用者名稱首碼,執行指令碼後刪除所有使用了該首碼的使用者賬戶,但要防止刪除root使用者。

  大量新增使用者指令碼:

  1、大量新增使用者指令碼myuadd.sh內容如下:

  #!/bin/bash

  read-p "input nu <1-99>:" nu

  read-p "input name:" name

  read-p "input date <YYYY-MM-DD>:" date

  read-p "input password:" password

  a=1

  if[ $nu -lt 100 ]

  then

  while[ $a -le $nu ]

  do

  if [ $a -lt 10 ]

  then

  useradd -e $date"$name"0"$a"

  echo "$password" | passwd--stdin "$name"0"$a" &>/dev/null

  else

  useradd -e $date"$name""$a"

  echo "$password" | passwd--stdin "$name""$a" &>/dev/null

  fi

  a=`expr$a + 1`

  done

  fi

  2、給指令碼myuadd.sh增加x許可權

  3、執行指令碼myuadd.sh,添加使用者

  4、驗證結果:查看/etc/passwd檔案是否添了新使用者

  大量刪除使用者指令碼:

  1、大量刪除使用者指令碼myudel.sh內容如下:

  #!/bin/bash

  if[ $# -le 0 ] ; then

  echo "error:the prefix of users has notbe specified."

  echo "usage:$0 nameprefix"

  exit 1

  fi

  tarjcvf /root/f.tar.gz /etc/passwd /etc/shadow /etc/group &>/dev/null

  tobedel=`grep"$1" /etc/passwd | cut -d ":" -f 1 | grep -v"root"`

  foru in $tobedel

  do

  userdel -r $u &> /dev/null

  done

  2、給指令碼myudel.sh增加x許可權

  3、執行指令碼myudel.sh,刪除使用者。如myudel.shcaiwu03或myudel.sh caiwu

  4、驗證結果:查看/etc/passwd檔案中已刪除的使用者是否還存在。

  附:

  我們可以用env或export命令查看環境變數,使用set命令查看所有變數(包括環境變數和自訂變數),使用unset命令刪除變數

  LINUX系統中大多數版本都有隨機數產生器,就是/dev/random檔案。可以通過這個隨機數檔案相關的系統環境變數$RANDOM來隨機取得隨機數。在BASH環境下,這個RANDOM變數的內容介於0——32767之間,(man bash,搜尋 RANDOM 可以看到說明)所以,只要echo $RANDOM時,系統就會主動隨機取出一個介於0——32767的數值。例如要想0-9之間的隨機數時,可以用declare聲明數實值型別

  

  或

  

linux shell指令碼神一般的測試案例

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.