人人都能學(xué)會(huì)的企業(yè)SHELL編程v2_第1頁
人人都能學(xué)會(huì)的企業(yè)SHELL編程v2_第2頁
人人都能學(xué)會(huì)的企業(yè)SHELL編程v2_第3頁
人人都能學(xué)會(huì)的企業(yè)SHELL編程v2_第4頁
人人都能學(xué)會(huì)的企業(yè)SHELL編程v2_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、人人都能學(xué)會(huì)的SHELL編程目 錄1. Shell入門簡(jiǎn)介22. Shell編程之變量詳解53. If條件語句學(xué)習(xí)84. 使用if條件語句編寫MySQL備份腳本105. IF條件綜合Shell實(shí)戰(zhàn)腳本編寫116. 循環(huán)語句for207. 循環(huán)語句while228. Until循環(huán)語句239. Case選擇語句2310. select選擇語句2511. Shell編程函數(shù)講解2512. Shell數(shù)組編程2713. Shell編程之a(chǎn)wk、sed命令案例分析3014. 全備和增量備份Linux系統(tǒng)腳本3115. Shell編程之系統(tǒng)硬件信息數(shù)據(jù)庫收集3416. Shell編程之磁盤報(bào)警高級(jí)腳本3

2、717. Shell編程之服務(wù)監(jiān)控檢查腳本4018. Shell編程之實(shí)戰(zhàn)WEB界面展示一4019. Shell編程之實(shí)戰(zhàn)WEB界面展示二4020. Shell編程之學(xué)習(xí)心得分享及拓展401. Shell入門簡(jiǎn)介說到Shell編程,我想很多從事Linux運(yùn)維工作的朋友都不陌生,都對(duì)Shell有基本的了解,可能大家剛開始接觸Shell的時(shí)候,有各種想法?能不能不學(xué)?高大上?到底是浮云?還是神馬?很難?。课蚁敫嬖V大家的是,大家有這些想法一點(diǎn)都不覺得驚訝,為什么?這些都很正常,對(duì)于任何一件事情在未開始之前,肯定會(huì)有總總假設(shè),那我今天想說的是,學(xué)完人人都會(huì)Shell編程后,我們會(huì)覺得一切的Shell都

3、是浮云,我們每個(gè)人都能很好的使用它,駕馭它,更好的完成我們?nèi)粘_\(yùn)維的工作。曾經(jīng)有人說過,玩Linux不知道Shell,那就是不懂Linux;現(xiàn)在細(xì)細(xì)品味確實(shí)是這樣。為了讓更多的人能接觸Shell、了解Shell,使用Shell,所以今天開設(shè)了這樣一個(gè)網(wǎng)絡(luò)課程,讓我們的Shell飛起來。好的,其他不多說了,我們正式進(jìn)入主題,什么是Shell呢?Shell是操作系統(tǒng)的最外層,Shell可以合并編程語言以控制進(jìn)程和文件,以及啟動(dòng)和控制其它程序。shell 通過提示您輸入,向操作系統(tǒng)解釋該輸入,然后處理來自操作系統(tǒng)的任何結(jié)果輸出來管理您與操作系統(tǒng)之間的交互。簡(jiǎn)單來說Shell就是一個(gè)用戶跟操作系統(tǒng)之間

4、的一個(gè)命令解釋器。Shell是用戶與Linux操作系統(tǒng)之間溝通的橋梁。用戶可以輸入命令執(zhí)行,又可以利用 Shell腳本編程去運(yùn)行。Linux Shell種類非常多,常見的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)等。不同的Shell語言的語法有所不同,所以不能交換使用。最常用的shell是Bash,也就是Bourne Again Shell,由于易用和免費(fèi),Bash在日常

5、工作中被廣泛使用,也是大多數(shù)Linux系統(tǒng)默認(rèn)的Shell。接下來我們來寫一個(gè)簡(jiǎn)單的shell腳本。(shell腳本一般文件名以.sh結(jié)尾,同時(shí)文件第一行定義該腳本為shell腳本)vi first_shell.sh#!/bin/bash#This is my First shellecho “Hello World !”這就是我們的第一個(gè)腳本,是不是很簡(jiǎn)單呢,注解如下:#!/bin/bash /表示定義該腳本是一個(gè)shell腳本(固定格式)。#This is my First shell /這里的#號(hào)屬于注解,沒有任何的意義,SHELL不會(huì)解析它。echo “Hello World !” /

6、shell腳本主命令,我們執(zhí)行這個(gè)腳本講看到: Hello World ! 信息。腳本編寫完畢,如何來執(zhí)行呢,首先執(zhí)行shell腳本需要執(zhí)行權(quán)限,賦予執(zhí)行權(quán)限:chmod o+x first_shell.sh 然后./first_shell.sh執(zhí)行即可;也可以直接使用命令執(zhí)行: /bin/sh first_shell.sh,顯示效果一樣。2. Shell編程之變量詳解Shell編程語言是非類型的解釋型語言,不像C+/JAVA語言編程時(shí)需要事先聲明變量,SHELL給一個(gè)變量賦值,實(shí)際上就是定義了變量,在Linux支持的所有shell中,都可以用賦值符號(hào)(=)為變量賦值。SHELL變量可分為兩類

7、:局部變量和環(huán)境變量。局部變量只在創(chuàng)建它們的shell腳本中使用。而環(huán)境變量則可以在創(chuàng)建它們的shell及其派生出來的任意子進(jìn)程中使用。有些變量是用戶創(chuàng)建的,其他的則是專用shell變量。例如在腳本里面定義A=123 ,定義這樣一個(gè)變量,前面變量名,后面是變量的值。引用變量可以使用$A,把變量放在腳本里面會(huì)出現(xiàn)什么樣的效果呢?如下:#!/bin/bash#Author wugk 2014-06-10A=123echo “Printf variables equal is $A”執(zhí)行腳本:sh test.sh,結(jié)果將會(huì)顯示:Printf variables equal is 123簡(jiǎn)單的理解變量

8、,相當(dāng)于定義一個(gè)別名-名稱,引用的時(shí)候加上$符號(hào)就可以了。例如定義變量 name=wuguangke 執(zhí)行echo $name 將會(huì)顯示wuguangke SHELL常見的系統(tǒng)變量解析:$0 當(dāng)前程序的名稱$n 當(dāng)前程序的第n個(gè)參數(shù),n=1,2,9$* 當(dāng)前程序的所有參數(shù)(不包括程序本身)$# 當(dāng)前程序的參數(shù)個(gè)數(shù)(不包括程序本身)$? 命令或程序執(zhí)行完后的狀態(tài),一般返回0表示執(zhí)行成功。$UID 當(dāng)前用戶的ID$PWD 當(dāng)前所在的目錄我們來測(cè)試一個(gè)常用變量的腳本:vi auto_var.sh#!/bin/bash#auto print variables#by wugk 2014-09echo

9、-e '03332m-0330m'echo "This is $0 param !"echo "This $1 is $1 param !"echo "This $2 is $2 param !"echo -e '03332m-0330m'echo "This $* is $* param !"echo "This $# is $# param !"echo "This $? is $? param !"echo緊接著我們來編寫一個(gè)簡(jiǎn)單的ech

10、o打印菜單:#!/bin/bash#auto install httpd #by wugk 2014-09echo -e '03332m-0330m'PREFIX=/usr/local/apache2/echo -e "03336mPlease Select Install Menu:0330m"echoecho "1)官方下載Httpd文件包."echo "2)解壓apache源碼包."echo "3)編譯安裝Httpd服務(wù)器."echo "4)啟動(dòng)HTTPD服務(wù)器."echo

11、 -e '03332m-0330m'sleep 203. If條件語句學(xué)習(xí)在Linux Shell編程中,if、for、while、case等條件流程控制語句用的非常多,把這些學(xué)好,對(duì)提升腳本的功力有非常大的幫助。下面將逐個(gè)來講解具體的用法:Ø If條件判斷語句if (表達(dá)式) #if ( Variable in Array )語句1else語句2fi案例一,測(cè)試數(shù)字大小#!/bin/shNUM=100if ( $NUM > 4 ) ;then echo “this num is $NUM greater 4 !”fi案例二,測(cè)試目錄是否存在,不存在則新建(注意

12、,中括號(hào)之間必須要空格)#!/bin/sh#judge dir existif ! -d /data/20140515 ;then mkdir -p /data/20140515 elseecho “This DIR is exist,Please exit .”fi邏輯運(yùn)算符解析:-f 判斷文件是否存在 eg: if -f filename -d 判斷目錄是否存在 eg: if -d dir -eq等于 應(yīng)用于:整型比較-ne不等于 應(yīng)用于:整型比較-lt小于 應(yīng)用于:整型比較-gt大于 應(yīng)用于:整型比較-le小于或等于 應(yīng)用于:整型比較-ge大于或等于 應(yīng)用于:整型比較-a雙方都成立(an

13、d) 邏輯表達(dá)式 a 邏輯表達(dá)式-o單方成立(or) 邏輯表達(dá)式 o 邏輯表達(dá)式-z空字符串案例三,多個(gè)條件測(cè)試判斷#!/bin/shscores=80if $scores -gt 85 ; then    echo "very good!"elif $scores -gt 75 ; then    echo "good!"elif $scores -gt 60 ; then    echo "pass!"else  

14、0; echo "no pass!"fi4. 使用if條件語句編寫MySQL備份腳本a) 自動(dòng)備份Mysql數(shù)據(jù)庫腳本#!/bin/sh #auto backup mysql #wugk 2012-12-12 #Define PATH定義變量BAKDIR=/data/backup/mysql/date +%Y-%m-%dMYSQLDB=webappMYSQLPW=backupMYSQLUSR=backup#must use root user run scripts 必須使用root用戶運(yùn)行,$UID為系統(tǒng)變量if $UID -ne 0 ;then echo This sc

15、ript must use the root user ! ! ! sleep 2 exit 0fi#Define DIR and mkdir DIR 判斷目錄是否存在,不存在則新建if ! -d $BAKDIR ;then mkdir -p $BAKDIRelse echo This is $BAKDIR exists. fi#Use mysqldump backup mysql 使用mysqldump備份數(shù)據(jù)庫/usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPW -d $MYSQLDB >$BAKDIR/webapp_db.sqlecho "T

16、he mysql backup successfully "5. IF條件綜合Shell實(shí)戰(zhàn)腳本編寫通過if語句和之前變量的學(xué)習(xí),今天我們將把我們所學(xué)的綜合在一起來講解一個(gè)實(shí)戰(zhàn)運(yùn)維腳本,一鍵安裝LAMP環(huán)境的腳本:一鍵源碼安裝LAMP腳本,先分解腳本的各個(gè)功能:打印菜單:1)安裝apache WEB服務(wù)器2)安裝Mysql DB服務(wù)器3)安裝PHP 服務(wù)器4)整合LAMP架構(gòu)并啟動(dòng)服務(wù)1、Apache服務(wù)器安裝部署。下載httpd-2.2.27.tar.gz版本,下載URL,解壓,進(jìn)入安裝目錄,configure;make ;make install2、Mysql服務(wù)器的安裝。下載m

17、ysql-5.5.20.tar.bz2版本,下載URL,解壓,進(jìn)入安裝目錄,configure;make ;make install3、PHP服務(wù)器安裝。下載php-5.3.8.tar.bz2版本,下載URL,解壓,進(jìn)入安裝目錄,configure;make ;make install4、LAMP架構(gòu)的整合和服務(wù)啟動(dòng)。/usr/local/apache2/bin/apachectl startvi htdocs/index.php<?phpphpinfo();?>vi auto_lamp.sh內(nèi)容如下:#!/bin/bash#auto install LAMP #by wugk 2

18、014-11#Httpd define path variableH_PREFIX=/usr/local/apache2/#MySQL define path variableM_PREFIX=/usr/local/mysql/#PHP define path variableP_PREFIX=/usr/local/php5/echo -e '03332m-0330m'echoif -z "$1" ;thenecho -e "03336mPlease Select Install Menu follow:0330m"echo -e &qu

19、ot;03332m1)編譯安裝Apache服務(wù)器0331m"echo "2)編譯安裝MySQL服務(wù)器"echo "3)編譯安裝PHP服務(wù)器"echo "4)配置index.php并啟動(dòng)LAMP服務(wù)"echo -e "03331mUsage: /bin/sh $0 1|2|3|4|help0330m"exitfiif "$1" -eq "help" ;then echo -e "03336mPlease Select Install Menu follow:

20、0330m" echo -e "03332m1)編譯安裝Apache服務(wù)器0331m" echo "2)編譯安裝MySQL服務(wù)器" echo "3)編譯安裝PHP服務(wù)器" echo "4)配置index.php并啟動(dòng)LAMP服務(wù)" echo -e "03331mUsage: /bin/sh $0 1|2|3|4|help0330m" exitfi#Install httpd web server if "$1" -eq "1" ;thenwget

21、 -c $H_URL/$H_FILES && tar -jxvf $H_FILES && cd $H_FILES_DIR &&./configure -prefix=$H_PREFIX if $? -eq 0 ;thenmake && make installecho -e "n03332m-0330m"echo -e "03332mThe $H_FILES_DIR Server Install Success !0330m"elseecho -e "03332mThe $H_FI

22、LES_DIR Make or Make install ERROR,Please Check."exit 0fifi#Install Mysql DB server if "$1" -eq "2" ;then wget -c $M_URL/$M_FILES && tar -xzvf $M_FILES && cd $M_FILES_DIR &&yum install cmake -y ;cmake . -DCMAKE_INSTALL_PREFIX=$M_PREFIX -DMYSQL_UNIX_AD

23、DR=/tmp/mysql.sock -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOC

24、AL_INFILE=1 -DWITH_EXTRA_CHARSETS=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BIG_TABLES=1 -DWITH_DEBUG=0make && make install/bin/cp support-files/my-f /etc/my.conf/bin/cp support-files/mysql.server /etc/init.d/mysqldchmod +x /etc/init.d/mysqldchk

25、config -add mysqldchkconfig mysqld on if $? -eq 0 ;then make && make install echo -e "n03332m-0330m" echo -e "03332mThe $M_FILES_DIR Server Install Success !0330m" else echo -e "03332mThe $M_FILES_DIR Make or Make install ERROR,Please Check." exit 0 fifi#Install

26、 PHP server if "$1" -eq "3" ;then wget -c $P_URL/$P_FILES && tar -jxvf $P_FILES && cd $P_FILES_DIR &&./configure -prefix=$P_PREFIX -with-config-file-path=$P_PREFIX/etc -with-mysql=$M_PREFIX -with-apxs2=$H_PREFIX/bin/apxs if $? -eq 0 ;then make ZEND_EXTRA_L

27、IBS='-liconv' && make install echo -e "n03332m-0330m" echo -e "03332mThe $P_FILES_DIR Server Install Success !0330m" else echo -e "03332mThe $P_FILES_DIR Make or Make install ERROR,Please Check." exit 0 fifi#if "$1" -eq "4" ;thensed -

28、i '/DirectoryIndex/s/index.html/index.php index.html/g' $H_PREFIX/conf/httpd.conf $H_PREFIX/bin/apachectl restartecho "AddType application/x-httpd-php .php" >>$H_PREFIX/conf/httpd.confIP=ifconfig eth1|grep "Bcast"|awk 'print $2'|cut -d: -f2echo "You can

29、 access http:/$IP/"cat >$H_PREFIX/htdocs/index.php <<EOF<?phpphpinfo();?>EOFFi6. 循環(huán)語句for For 變量 in 字符串do語句1done案例一,打印seq數(shù)字循環(huán)#!/bin/shfor i in seq 15doecho “NUM is $i”done案例二,求和1-100的值#!/bin/bash#auto sum 1 100j=0for (i=1;i<=100;i+)do j=expr $i + $jdoneecho $j案例三,找到相關(guān)log,然后批量打包

30、#!/bin/shfor i in find /var/log -name “*.log”dotar czf 2014log.tgz $idone案例四,遠(yuǎn)程主機(jī)批量傳輸文件:#!/bin/bash#auto scp files for client#by authors wugk 2014for i in seq 100 200do scp -r /tmp/test.txt root192.168.1.$i:/data/webapps/wwwDone案例五,遠(yuǎn)程主機(jī)批量執(zhí)行命令:#!/bin/bash#auto scp files for client#by authors wugk 201

31、4for i in seq 100 200do ssh -l root 192.168.1.$i ls /tmpdone7. 循環(huán)語句whilewhile 條件語句do語句1done案例一,while條件判斷數(shù)字 #!/bin/shi=1;while $i -lt 10 ;do echo $i; (i+);done;案例二,擴(kuò)展講解linux read命令read -p Please Input number:案例三,while逐行讀取某個(gè)文件#!/bin/shwhile read linedo echo $line;done < /etc/hosts綜合腳本編寫:8. Until循環(huán)語

32、句until 條件doactiondone直到滿足條件,才退出。否則執(zhí)行action。案例一,條件判斷數(shù)字#!/bin/sha=10;until $a -lt 0 ;doecho $a;(a-);done;9. Case選擇語句case $arg in pattern1) 語句1 ; pattern2) 語句2 ; *) 語句3 ; esac案例一,創(chuàng)建選擇參數(shù)腳本#!/bin/shcase $1 in monitor_log) monitor_log ; archive_log) archive_log ; * ) echo "Usage:$0 monitor_log | arch

33、ive_log |help " ;esac10. select選擇語句Select一般用于選擇菜單的創(chuàng)建,可以配合PS3來做菜單的打印輸出信息。#!/bin/shPS3="What you like most of the open source system?"select i in CentOS RedHat Ubuntu doecho "Your Select System: "$iDone11. Shell編程函數(shù)講解shell允許將一組命令集或語句形成一個(gè)可用塊,這些塊稱為shell函數(shù),定義函數(shù)的格式:function name (

34、) command1 .name編寫一個(gè)Apache安裝函數(shù):#!/bin/bash#auto install LAMP #by wugk 2014-11#Httpd define path variableH_PREFIX=/usr/local/apache2/function Apache_install()#Install httpd web server if "$1" -eq "1" ;thenwget -c $H_URL/$H_FILES && tar -jxvf $H_FILES && cd $H_FILES

35、_DIR &&./configure -prefix=$H_PREFIX if $? -eq 0 ;thenmake && make installecho -e "n03332m-0330m"echo -e "03332mThe $H_FILES_DIR Server Install Success !0330m"elseecho -e "03332mThe $H_FILES_DIR Make or Make install ERROR,Please Check."exit 0fifiApache_i

36、nstall直接調(diào)用函數(shù)就會(huì)去運(yùn)行函數(shù)里面定義的代碼了。12. Shell數(shù)組編程數(shù)組,就是相同數(shù)據(jù)類型的元素按一定順序排列的集合,就是把有限個(gè)類型相同的變量用一個(gè)名字命名,然后用編號(hào)區(qū)分他們的變量的集合,這個(gè)名字成為數(shù)組名,編號(hào)成為下標(biāo)。今天這里我們來探討一維數(shù)組的定義、統(tǒng)計(jì)、引用和刪除等操作。首先來定義一個(gè)一維數(shù)組:A=( test1 test2 test3 ) ,定義數(shù)組一般以括號(hào)的方式來定義,數(shù)組的值可以隨機(jī)定義。如何來引用呢?echo $A0,代表引用第一個(gè)數(shù)組變量,結(jié)果會(huì)顯示test1,數(shù)組引用從0開始,代表第一個(gè)數(shù)組,依次類推。echo $A1,代表引用第二個(gè)數(shù)組變量,結(jié)果會(huì)顯示

37、test2,數(shù)組引用也是從0開始計(jì)算的。 如何顯示該數(shù)組所有參數(shù)呢?echo $A 將顯示所有參數(shù)test1 test2 test3 。如何顯示該數(shù)組參數(shù)個(gè)數(shù)呢?echo $#A 將顯示該數(shù)組的參數(shù)個(gè)數(shù)3。如果替換某個(gè)數(shù)組呢?例如替換第二個(gè)test2數(shù)組為test5:echo $A/test2/test5如何刪除一個(gè)數(shù)組呢?例如刪除test3數(shù)組命令為:unset A2 ;echo $A查看效果。那輸入如何在編程來使用呢?請(qǐng)看下面例子:#!/bin/sh#Auto Make KVM Virtualization#Auto config bond scriptseth_bond()NETWORK

38、=( HWADDR=ifconfig eth0 |egrep "HWaddr|Bcast" |tr "n" " "|awk 'print $5,$7,$NF'|sed -e 's/addr:/g' -e 's/Mask:/g'|awk 'print $1' IPADDR=ifconfig eth0 |egrep "HWaddr|Bcast" |tr "n" " "|awk 'print $5,$7,$NF

39、'|sed -e 's/addr:/g' -e 's/Mask:/g'|awk 'print $2' NETMASK=ifconfig eth0 |egrep "HWaddr|Bcast" |tr "n" " "|awk 'print $5,$7,$NF'|sed -e 's/addr:/g' -e 's/Mask:/g'|awk 'print $3' GATEWAY=route -n|grep "UG&q

40、uot;|awk 'print $2')cat >ifcfg-bond0<<EOFDEVICE=bond0BOOTPROTO=static$NETWORK1$NETWORK2$NETWORK3ONBOOT=yesTYPE=EthernetNM_CONTROLLED=noEOF如上腳本為定義三個(gè)數(shù)組變量,然后分別來引用,這樣讓腳本可讀性更強(qiáng),更整潔。關(guān)于數(shù)組就簡(jiǎn)單的介紹到這里。13. Shell編程之a(chǎn)wk、sed命令案例分析在我們?nèi)粘5腟hell編程中我們會(huì)用到很多的一些語句,有的語句,如果用好了,可以讓我們的腳本更上一層樓,讓我們的功能更容易滿足企業(yè)的需求。

41、Sed命令:sed 's/192/10/g' test.txt 把文件里面的192字符替換為10在文件開頭或者結(jié)尾添加字符:Awk命令:Find命令:Grep正則:14. 全備和增量備份Linux系統(tǒng)腳本在Linux中,我們經(jīng)常需要備份系統(tǒng)重要文件,例如/etc、/boot分區(qū)、重要網(wǎng)站數(shù)據(jù)等等,如果每天都完整備份的話,會(huì)占用很大的空間,那我們改如何來備份呢?這里采用如下方法來備份:每周日進(jìn)行完整備份,其余每天為增量備份。那使用什么命令來備份呢,我們使用tar命令:全備份:tar -g /tmp/snapshot -czvf /tmp/2014_full_system_data

42、.tar.gz /data/sh/增量備: tar -g /tmp/snapshot -czvf /tmp/2014_add01_system_data.tar.gz /data/sh/#!/bin/sh#Automatic Backup Linux System Files#Author wugk 2013-11-22#Define VariableSOURCE_DIR=( $*)TARGET_DIR=/data/backup/YEAR=date +%YMONTH=date +%mDAY=date +%dWEEK=date +%uA_NAME=date +%H%MFILES=system_b

43、ackup.tgzCODE=$?if -z "$*" ;then echo -e "03332mUsage:nPlease Enter Your Backup Files or Directoriesn-nnUsage: $0 /boot /etc0330m" exitfi#Determine Whether the Target Directory Existsif ! -d $TARGET_DIR/$YEAR/$MONTH/$DAY ;then mkdir -p $TARGET_DIR/$YEAR/$MONTH/$DAY echo -e "

44、03332mThe $TARGET_DIR Created Successfully !0330m"fi#EXEC Full_Backup Function CommandFull_Backup()if "$WEEK" -eq "7" ;then rm -rf $TARGET_DIR/snapshot cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $FILES $SOURCE_DIR "$CODE" = "0" &a

45、mp;&echo -e "-n03332mThese Full_Backup System Files Backup Successfully !0330m"fi#Perform incremental BACKUP Function CommandAdd_Backup() if $WEEK -ne "7" ;then cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf $A_NAME$FILES $SOURCE_DIR "$CODE" = &

46、quot;0" &&echo -e "-n03332mThese Add_Backup System Files $TARGET_DIR/$YEAR/$MONTH/$DAY/$YEAR_$A_NAME$FILES Backup Successfully !0330m" fisleep 3 Full_Backup;Add_Backup15. Shell編程之系統(tǒng)硬件信息數(shù)據(jù)庫收集首先我們創(chuàng)建數(shù)據(jù)庫表,格式如下:CREATE TABLE audit_audit_system ( id int(11) NOT NULL AUTO_INCREMENT, i

47、p_info varchar(50) NOT NULL, serv_info varchar(50) NOT NULL, cpu_info varchar(50) NOT NULL, disk_info varchar(50) NOT NULL, mem_info varchar(50) NOT NULL, load_info varchar(50) NOT NULL, mark_info varchar(50) NOT NULL, PRIMARY KEY (id), UNIQUE KEY ip_info (ip_info), UNIQUE KEY ip_info_2 (ip_info) );

48、然后編寫腳本如下:#!/bin/sh#auto get system info#author wugk 2014-08-29echo -e "03334m 0331m"cat <<EOF+Welcome to use system Collect+EOFip_info=ifconfig |grep "Bcast"|tail -1 |awk 'print $2'|cut -d: -f 2cpu_info1=cat /proc/cpuinfo |grep 'model name'|tail -1 |awk -F:

49、'print $2'|sed 's/ /g'|awk 'print $1,$3,$4,$NF'cpu_info2=cat /proc/cpuinfo |grep "physical id"|sort |uniq -c|wc -lserv_info=hostname |tail -1disk_info=fdisk -l|grep "Disk"|grep -v "identifier"|awk 'print $2,$3,$4'|sed 's/,/g'mem_i

50、nfo=free -m |grep "Mem"|awk 'print "Total",$1,$2"M"'load_info=uptime |awk 'print "Current Load: "$(NF-2)'|sed 's/,/g'mark_info='BeiJing_IDC'echo -e "03332m-0331m"echo IPADDR:$ip_infoecho HOSTNAME:$serv_infoecho CPU_INF

51、O:$cpu_info1 X$cpu_info2echo DISK_INFO:$disk_infoecho MEM_INFO:$mem_infoecho LOAD_INFO:$load_infoecho -e "03332m-0330m"echo -e -n "03336mYou want to write the data to the databases? 0331m" ;read ensureif "$ensure" = "yes" -o "$ensure" = "y" -o "$ensure" = "Y" ;thenecho "-"echo -e '03331mmysql -uaudit -p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論