01自动化运维之基本命令

自动化运维

​ 1 shell语法 运行机制 常见应用
2 自动化代码发布案例

1 自动化运维:

​ 编写shell脚本实现运维过程自动化

开发规范

1 不要用中文注释
2 成对内容一次性写出
3 适当缩进(类似python缩进风格)
2 shell

​ 1 shell概念:
命令解释器(应用程序和操作系统之间的接口)

3.基本命令
2 shell分类
	常用:linux命令行(重点是bash)
	
3 查看当前系统shell:
	echo $SHELL
	/bin/bash
	
4 查看当前系统兼容性支持的其他shell版本
	cat /etc/shells
	
5 shell脚本
	命令放到文件中执行,文件就叫shell脚本
4.创建脚本和脚本执行
1 创建脚本
	1 用记事本(vim)创建脚本文件
	2 文件名要有意义,.sh结尾
	3 文件内容首行指定脚本解释器:#!/bin/bash
	4 单行注释: #开头
		多行注释: :<<字符 ... 字符  (将字符们重定向到啥都不干)

2 脚本执行
	1 ./脚本名(启动子进程(名字叫脚本名),在子进程中执行脚本命令)
	2 source 脚本名(不启动子进程,直接在当前shell执行命令)
5.定义变量和变量的使用
1 定义变量
	普通变量:
		1 变量名=变量值 (变量值不可用有特殊字符)
		2 变量名='变量值'(变量值可以有特殊字符)
		3 变量名="变量值" (变量套变量)
		
	命令变量:
		将命令的输出作为变量值赋给变量名
		变量名=`命令`
		变量名=$(命令)
		
		命令只在定义时执行一遍
		
2 变量访问
	1 $变量名 
	2  "$变量名"  (将变量值作为字符串)
	3 ${变量名} (限定变量名范围)
	4 "${变量名}"  (推荐使用)
	unset 变量名 (取消变量)
	
3 本地变量
	在哪定义,在哪访问
4 全局变量(环境变量)
	1 查看当前系统全局变量
		env
	2 定义全局变量
		1 变量名=export 变量
			先定义后转换
		2 export 变量名=值 (二合一)
		
	3 全局变量生效范围:
		当前shell 和子shell生效(子shell继承父shell的全局变量)
		
	要想所有环境都生效:
		1 修改~/.bashrc (当前用户生效---》打开新shell或source执行后生效)
		2 修改/etc/profile(所有用户都生效--》重启或者source执行)
		
5 内置变量
	脚本相关:
		$0 脚本名
		$$ 执行脚本的进程号
		$n 第n个参数(n>=10时要加{})
		$# 参数个数
		$? 上一条指令的执行结果(0--》成功  非0----》失败,上一条指令若是脚本,代表脚本中最后一条指令的返回值)
	字符串截取:
		${变量名:起始位置:截取长度}
		(反向截取时,0-X)
		
	默认值:
		${变量名:-默认值} (变量不存在则输出默认值)
		${变量名:+提示信息} (变量存在则是从提示信息)
6.表达式的使用
1 表达式
	逻辑转化成控制
1.1 测试语句
	test 条件
	[ 条件 ]  (方括号内左右各有一个空格)
		
	数值比较(比较符左右各有一个空格)
		n1 -eq n2 相等
		n1 -gt n2 大于
		n1 -ge n2 大于等于
		n1 -lt n2 小于
		n1 -le n2 小于等于
		n1 -ne n2 不等于
			
	字符串比较:
		== != (跟python相同)
			
1.2 逻辑表达式
	命令1 && 命令2 (1 成功则执行2)
	命令1 || 命令2 (1 失败则执行2)
	
1.3 文件表达式
	-f 判断是否是文件
	-d 判断是否是目录
	-x 判断是否可执行(目录可执行)
	
1.4 计算表达式
	$(( 计算表达式 ))  (括号中间是计算过程)
	let 等式			
7.常见符号
1 常见符号
1.1 重定向
	应用程序的输出:
	1 标准输出(正常运行时)
	2 标准错误(错误提示)
			
	分别重定向:
		bash 6-chongdingxiang.sh 1> res.log 2>err.log
	合并重定向:
		bash 6-chongdingxiang.sh > res.txt 2>&1(将标准错误重定向到标准输出相同的位置)
	丢弃:
		bash 6-chongdingxiang.sh > /dev/null(垃圾桶) 2>&1

1.2 管道符
	命令1 | 命令2 
	(1 的输出作为2的输入)
	
1.3 后台展示符 
	命令 &  (命令放到后台运行)
8.常用命令
1 常用命令
1.1 grep   搜索文件内容
	grep -rn bash .
	在当前目录下递归所有文件(包含子目录),查找包含bash的行并显示行号
	
2 find
	find . -name "*sh"
	在当前目录以及子目录中查找文件名末尾是sh的文件
	
3 sed 文本编辑工具
	-i 代表修改原文件
	替换
		sed "2s#sed#SED#2" sed.txt
		`2(第二行)` `s替换` `#sed(原内容)` `#SED(替换后内容)` `#2(替换次数)` `g代表全部替换)`
			
	增加:
		sed -i "2a\hello" sed.txt
		2(第二行)a(在第二行下面增加)\hello(待增加内容)
		sed -i "5i\world" sed.txt
		5(第5行)i(在第五行上边增加)\world(待增加内容)
	删除
		sed "2(第2行)d(删除)" sed.txt			
9.awk 基于行的编辑工具
1. awk 基于行的编辑工具
	awk '{print $3,$1}' awk.txt
	(打印awk.txt文件中的第3 列和第1列(用空格分割))
		
   内置变量:
        FILENAME  文件名
   NR 行号:
       awk 'NR==2 {print $3}' awk.txt
        (只对第二行进行打印操作)
    NF  列数:
       awk '{print $NF}' awk.txt
        (打印最后一列)
    FS  指定分割符:
       awk 'BEGIN{FS="a"} {print $2}' awk.txt
        (用a分割每一行, 更推荐用参数:-F "a")
    OFS  指定多个输出时的连接符
       awk 'BEGIN{OFS="->"} {print $1,$3}' awk.txt
        (打印第1列和第3列并用->连接)
10.分支,函数
1 分支
1.1 if分支:
	if [ 条件 ]
	then
		指令1
	elif [ 条件2 ]
	then
		指令2
	else
		指令3
	fi
		
	`别忘了fi`
2 case分支  `一对多的分支判断`
		case 变量名 in
		   值1)
			  指令1
				 ;;(情况1的结束)
		   ...
		   值n)
			 指令n
				 ;;
			*)
				其他情况
				;;
		esac
3 循环
	for循环
		forin 列表(一般用命令变量的输出)
		do
		   执行语句
		done
		
	while循环(跟python完全一样)
		while 条件
		do
		   执行语句
		done

4 函数
	定义:
		函数名() {
			函数体
			$n 代表第n个函数的参数
			$0 永远都是脚本名
		}
	
	调用:
		函数名 参数1 参数2 。。。。
	返回值
		return (0~255)
		获取返回值:$?
	命令变量也适用于函数
11.虚拟环境命令们导入方法
1 虚拟环境命令们导入方法:
	export WORKON_HOME=/root/.venv   (定义存储虚拟环境的路径)
	source /usr/local/bin/virtualenvwrapper.sh	
12.shell中可执行命令的种类
1-shell中可执行命令的种类
	1 应用程序---》which查到信息
	2 脚本-------》 file查到文件类型
	3 函数-------》以上两条命令查不到

自动化运维之手动发布代码参考链接
https://blog.csdn.net/zui0302/article/details/85063064
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值