Shell腳本應用(一)

2018-06-08 17:05 更新

防偽碼:但愿人長久,千里共嬋娟

                第五章 shell腳本應用(一)

溫馨提示: 如果想提高shell腳本的編寫速度,必須要熟練使用vi編輯器的各種快捷鍵

前言:

1、shell腳本的作用:可以批量處理、自動化完成一系列維護任務,大大減輕管理員的負擔。

2、介于系統(tǒng)內(nèi)核與用戶之間,負責解釋命令行,如圖所示;

    

3、執(zhí)行腳本文件的方法

a、腳本文件路徑(必須有x權(quán)限)

b、sh 腳本文件路徑(必須有x權(quán)限)

c、source 腳本文件路徑(不要求有x權(quán)限)

4、交互式硬件設備

    類型    設備文件  文件描述編號         默認設備
    標準輸入  /dev/stdin          0    鍵盤
    標準輸出  /dev/stdout      1    顯示器
    標準錯誤輸出  /dev/stderr      2    顯示器

5、重定向操作

一、shell腳本基礎知識

1、 編制第一個shell腳本

1)Vi  first.sh

2)在腳本文件中輸入如下內(nèi)容

3) 設置執(zhí)行權(quán)限并執(zhí)行

2、 為腳本添加注釋,友好輸出,更容易讀懂。

1)Vi  first.sh

2) ./first.sh執(zhí)行腳本之后如下

3、 重定向操作

1) >表示重定向輸出,>>表示重定向追加

2) 重定向輸入,<表示重定向輸入

Vim pass.txt,在文件中添加123456

然后執(zhí)行passwd  --stdin jerry  < pass.txt

3)錯誤重定向,可用來收集程序執(zhí)行的錯誤信息,為排錯提供依據(jù)。

例如:執(zhí)行以下操作可以將使用tar命令備份時出現(xiàn)的錯誤信息保存到error.log文件中

 4) &>操作符可以將兩類輸出信息保存到同一個文件,例如,在編譯源碼包的自動化腳本中,若要忽略make,make install的操作的過程信息,可以將其定向到空文件/dev/null

首先下載httpd軟件到本機,然后執(zhí)行Vim httpd_install.sh,并輸入如下內(nèi)容:

設置權(quán)限chmod  +x  httpd_install.sh

最后執(zhí)行./httpd_install.sh

4、 管道操作

例子:使用grep命令查詢使用/bin/bash作為shell的用戶名稱時,會輸出符合條件的整行內(nèi)容,在此基礎上可以結(jié)合管道操作與Awk命令做進一步過濾,只輸出用戶名和登錄shell列。

1) 提取之前的正常效果

2) 提取之后的效果,只顯示用戶名和shell列

3) 再例如:顯示磁盤已用的百分比

二、使用shell變量

1、自定義變量:只在自己的shell環(huán)境中有效

1)定義新的變量和引用變量

Product=benet

Version=5.0


2、變量賦值的特殊操作

1)雙引號的作用:賦值的內(nèi)容包含空格時,例如:


2) 單引號的作用:賦值的內(nèi)容中包含”$”,  ““” , “ \ ”等具有特殊含義的字符時

3) 反撇號(`)的作用:用于將某個命令的輸出結(jié)果賦值給變量,例如:

4) $()的作用:可以代替反撇號,解決嵌套問題,因為反撇號不能實現(xiàn)嵌套,例如:查詢提供useradd命令程序的軟件包所安裝的配置文件位置。

5) read命令的作用:用來提示用戶輸入信息,例如:

3、 設置變量的作用范圍

     新定義的變量只在當前shell有效,如果想進入新的shell環(huán)境同樣有效,就需要使用export命令將變量導出為“全局變量”

也可以在export導出全局變量的同時,也可以為變量賦值,例如:

4、 變量的運算

例如:計算變量y的三次方,并將結(jié)果賦值給變量ycube

三、 特殊的shell變量

1、 環(huán)境變量

環(huán)境變量系統(tǒng)安裝好了就存在,不用創(chuàng)建,可以直接使用,我們先查看一下:

env

我們可以把腳本直接添加到$PATH搜索路徑中去,這樣執(zhí)行腳本的時候就不用加./了

環(huán)境變量的全局配置文件為/etc/profile,作用于所有用戶,例如:將歷史記錄命令條數(shù)改為20條,只針對root用戶

Vim  /root/.bash_profile

只需要添加上面的最后一行,然后執(zhí)行source  /root/.bash_profile使之生效。

2、 位置變量,例如求兩個數(shù)的和

Vi  adder2num.sh

3、 預定義變量,系統(tǒng)安裝好之后就有,不能創(chuàng)建,只能使用,

例如:$#表示命令行中位置參數(shù)的個數(shù),$*表示所有位置參數(shù)的內(nèi)容,$?表示前一條命令執(zhí)行后的返回狀態(tài),返回0表示正確。$0表示當前執(zhí)行的腳本或程序的名稱。

例如:制作備份數(shù)據(jù)腳本,vi mybak.sh

執(zhí)行腳本./mybak.sh,備份兩個文件

查看備份結(jié)果

四、 綜合案例

1、 實驗目標:遠程備份mysql服務器的數(shù)據(jù)庫

2、 實驗環(huán)境:一共2臺mysql服務器A和B,在B上遠程備份A上的數(shù)據(jù)庫,在A上建立數(shù)據(jù)庫google和baidu,注意在防火墻上開啟3306端口或者關閉防火墻,并設置計劃任務定時更新

3、 實驗拓撲:

4、 實驗步驟

1) 在A上建立數(shù)據(jù)庫,

2) 在A上建立一個建立一個專用的數(shù)據(jù)庫用戶,這里我使用root賬戶,授予root賬戶對可以通過遠程主機192.168.1.2連接A

3) 在備份主機B上備份測試

查看已經(jīng)備份成功

4) 在備份主機B上編寫腳本,之前需要創(chuàng)建備份目錄 mkdir  -p  /opt/beifen

然后編寫腳本vi  mysqlbak.sh

5)執(zhí)行備份腳本

./mysqlbak.sh

5、 設置計劃任務

Crontab  -e

查看已經(jīng)備份成功

謝謝觀看,真心的希望能幫到您!

 


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號