SHELL自動化運維day2

第四章、流程控制

4.1 簡單流程控制語句

4.1.1單分支if語句

語法格式:if [ 條件 ]  

單一條件只有一個輸出

#!/bin/bash
#單if語句使用場景
if [ "$1" == "nan" ]
then
    echo "您的性別是 男"
fi

4.1.2雙分支if語句

語法格式

if [ 條件 ]
    then
        指令1
else
    指令2
if

 

4.1.3多分支if語句

語法格式:

if [ 條件 ]
    then
        指令1
elif [ 條件2 ]
    then
        指令2
else
    指令3
fi

 

多if語句生產場景:服務的啓動

#!/bin/bash
# 多if語句的使用場景
if [ "$1" == "start" ]
then
   echo "服務啓動中..."
elif [ "$1" == "stop" ]
then
   echo "服務關閉中..."
elif [ "$1" == "restart" ]
then
   echo "服務重啓中..."
else
   echo "$0 腳本的使用方式: $0 [ start | stop | restart ]"

 

4.1.4case選擇語句

語法格式:

case 變量名 in
   值1)
      指令1
         ;;
   值2)
      指令2
         ;;
   值3)
 	  指令3
         ;;
esac

 

語句示例:

# cat case.sh 
#!/bin/bash
# case語句使用場景
case "$1" in					
	"start")	
		echo "服務啓動中..."					
		;;					
	"stop")					
		echo "服務關閉中..."					
		;;							
	"restart")					
		echo "服務重啓中..."					
		;;					
	*)					
		echo "$0 腳本的使用方式: $0 [ start | stop | restart ]"		
		;;					
esac

 

4.1.5for循環語句

語法結構:

for 值 in 列表
do
   執行語句
done

示例:遍歷文件

#!/bin/bash
# for語句的使用示例
for i in $(ls /root)
do
  echo "${i}"
done

4.1.6while循環語句

語法結構:

while 條件
do
   執行語句
done

條件的類型:

命令、[[ 字符串表達式 ]]、(( 數字表達式 ))

示例:

#!/bin/bash
# while的示例
a=1
while [ "${a}" -lt 5 ] 
do
   echo "${a}"
   a=$((a+1))
done

4.1.7until循環語句

語法結構:

until 條件
do
   執行語句
done

示例:

#!/bin/bash
# until的示例
a=1
until [ "${a}" -eq 5 ] 
do
   echo "${a}"
   a=$((a+1))
done

4.2 複雜的流程控制語句

4.2.1 函數基礎知識

函數定義:

函數名(){
	函數體
}

函數調用

函數名

傳參函數格式

函數名 參數 

函數體調用參數

函數名(){
	函數體 $n
}

實踐1:

#!/bin/bash
# 函數傳參演示

# 定義傳參數函數
dayin(){
  echo "wode mignzi shi $1"
}

# 函數傳參
dayin $1

實踐2:

#!/bin/bash
# 函數的使用場景二
dayin(){
  echo "wo de mingzi shi $1"
  echo "wo de mingzi shi $2"
  echo "wo de mingzi shi $3"
}
dayin 111 df dfs

 

第5章 代碼發佈

5.1.2 發佈方式

手動方式和腳本方式

5.2 代碼發佈流程

 

 

技術點1、文件解壓縮:

壓縮: tar zcvf 壓縮後的文件名 需要壓縮的文件

解壓:tar xf 壓縮後的文件名

命令參數詳解:

z 指定文件格式爲tar.gz

c 壓縮

v 顯示詳細過程

f 指定壓縮文件

x 解壓

查看壓縮文件內容:

zcat 壓縮文件

技術點2、scp傳輸工具

命令格式:

    scp 要傳輸的文件  要放置的位置

本地文件推送遠程主機

scp python.tar.gz [email protected]:/root/

將遠程主機的文件拉取到本地

scp [email protected]:/root/python.tar.gz ./

技術點3、文件的備份

文件的備份要有一定的標誌符號,我們就使用目前通用的時間戳的形式來表示

date命令詳解

    命令格式:date [option]

    常見參數:

         %F 顯示當前日期格式,%Y-%m-%d

         %T 顯示當前時間格式

演示效果

# date +%F
2017-09-28
# date +%T
03:06:30
# date +%Y%m%d
20170928
# date +%H%M%S
030643

備份命令格式:

方式一:複製備份
cp nihao nihao-$(date +%Y%m%d%H%M%S)
方式二:移動備份(儘量使用)
mv nihao nihao-$(date +%Y%m%d%H%M%S)

練習案例:

1、在主機1上創建一個目錄/data/tar-ceshi/,在目錄裏面創建兩個文件,內容分別如下:
文件名            內容
file1.txt        file1
file2.txt        file2
2、對目錄tar-ceshi進行壓縮
3、對目錄tar-ceshi進行時間戳備份
4、將壓縮包文件傳輸到遠端主機2
5、在主機2上解壓 壓縮包文件
6、在主機2上修改壓縮包文件內容。然後再次壓縮
7、在主機1上拉取主機2的壓縮包文件
8、使用命令查看壓縮包文件的內容
命令執行效果:
主機1操作命令

1、
mkdir /data/tar-ceshi -p
cd /data
echo 'file1' > tar-ceshi/file1.txt
echo 'file1' > tar-ceshi/file1.txt
2、tar zcvf tar-ceshi.tar.gz tar-ceshi
3、mv tar-ceshi tar-ceshi-$(date +%Y%m%d%H%M%S)
4、scp tar-ceshi.tar.gz [email protected]:/tmp
主機2操作命令
5、
cd /tmp
tar xf tar-ceshi.tar.gz
6、
echo 'file3' >> tar-ceshi/file1.txt
tar zcvf tar-ceshi-1.tar.gz tar-ceshi
主機1操作命令
7、scp [email protected]:/tmp/tar-ceshi-1.tar.gz ./
8、zcat tar-ceshi-1.tar.gz

第六章、 環境部署

技術點一:ssh免密登錄

需要兩臺服務器進行測試,主機1,遠程倉庫2

1、本機生成祕鑰對

主機生成的祕鑰在~/.ssh/

            私鑰      id_rsa             鑰匙

            公鑰      id_rsa.pub         鎖

ssh-keygen -t rsa

2、對端機器使用公鑰文件認證

複製主機1的公鑰到遠程倉庫2的~/.ssh下的authorized_keys文件內

修改遠程倉庫的文件內

vi /etc/ssh/sshd_config
AuthorizedKeysFile      %h/.ssh/authorized_keys

重啓服務:

/etc/init.d/ssh restart

3、驗證

ssh [email protected]

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章