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]

 

 

 

 

 

 

 

 

 

 

 

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