歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux Shell腳本測試的例子

腳本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,內容如下:

URL:http://www.bianceng.cn/OS/Linux/201410/45768.htm

附:

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/resolv.conf文件指向DNS服務器地址

c:配置郵件服務器

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

修改main.cf文件,修改後內容如下:

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

d:確認有可用的郵件服務器,然後調低監控阈值,執行sysmon.sh腳本進行測試

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

郵件內容如下:

URL:http://www.bianceng.cn/OS/Linux/201410/45768.htm

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 "httpd is down.at time: `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權限

URL:http://www.bianceng.cn/OS/Linux/201410/45768.htm

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/目錄中所有*.conf配置文件所占用的總空間大小

用vi創建一個名為confsize.sh腳本,內容如下:

#!/bin/bash

sizenums=$(ls-l $(find /etc/ -type f -a -name *.conf) | 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用戶。

URL:http://www.bianceng.cn/OS/Linux/201410/45768.htm

批量添加用戶腳本:

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/users.cnf.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聲明數值類型

本文出自 “甘兵” 博客,請務必保留此出處http://ganbing.blog.51cto.com/7002794/1227663

Copyright © Linux教程網 All Rights Reserved