1、 ansible 2、shell脚本 2.0、常用变量 2.1、循环 2.2、if 2.3、case 2.4、正则 2.5、数组
1、 ansible
1.1、 主机清单
[a]
#192.168.100.[1:50]
#[b]
#192.168.101.1
#192.168.101.2
#[ab:children]
#a
#b
[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=""
ansible_timeout=20
ansible_python_interpreter=/usr/bin/python3
ansible_host_key_checking=false
#ansible_ssh_private_key_file=./id_rsa # 私钥文件路径
#ansible_gather_subset=!all
2、shell脚本
2.0、常用变量
时间 timestamp=$(date +%Y%m%d%H%M%S)
临时目录/文件 tmp_dir=$(mktemp -d /tmp/1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.log)
-d 目录
2.1、循环
while read line;do
echo ${line}
done < /tmp/tpm.data
死循环
while true ;do echo a ; sleep 0.2; done
while : ;do echo a ; sleep 0.2; done
break
continue
多线程结束
wait
2.2、if
if 判断条件1;then
elif 判断条件2;then
else
fi
-eq //测试两个整数是否相等
-ne //测试两个整数是否不等
-gt //测试一个数是否大于另一个数
-lt //测试一个数是否小于另一个数
-ge //大于或等于
-le //小于或等于
== //等值比较,检查==两边的内容是否一致,==两边都要有空格
!= //检查两边内容是否不一致,不一致为真,一致为假
=~ //左侧字符串是否能够被右侧的PATTERN所匹配到。此表达式应用于双中括号[[]]中
-z "string" //测试指定字符串是否为空,空则为真,不空则为假
-n "string" //测试指定字符串是否不空,不空则为真,空则为假
//存在性测试:
-e //测试文件是否存在
//存在性及类别测试:
-b //测试文件是否为块设备文件
-c //测试文件是否为字符设备文件
-f //测试文件是否为普通文件
-d //测试指定路径是否为目录
-h //测试文件是否为符号链接文件
-L //测试文件是否为符号链接文件
-p //测试文件是否为命名管道文件
-S //测试文件是否为套接字文件
//文件权限测试:
-r //测试当前用户对指定文件是否有读权限
-w //测试当前用户对指定文件是否有写权限
-x //测试当前用户对指定文件是否有执行权限
//文件特殊权限测试:
-g //测试文件是否有sgid权限
-u //测试文件是否有suid权限
-k //测试文件是否有sticky权限
//文件大小测试:
-s //测试文件是否非空
//文件是否打开测试:
-t fd //fd表示的文件描述符是否已经打开且与某终端相关
//双目测试:
file1 -ef file2 //测试file1与file2是否指向同一个设备上的相同inode,说白点就是两者是不是同一个文件
file1 -nt file2 //测试file1是否比file2新
file1 -ot file2 //测试file1是否比file2旧
//无分类:
-N //测试文件自从上一次被读取之后是否被修改过
-O //测试文件是否存在并且被当前用户拥有
-G //测试文件是否存在并且默认组是否为当前用户组
-a //与关系
-o //或关系
! //非关系
2.3、case
case $变量名 in
value1) statement ;;
value2) statement ;;
*) statement ;;
esac
* //任意长度任意字符
? //任意单个字符
[] //指字范围内的任意单个字符
abc|bcd //abc或bcd
2.4、正则
字符类
含义
等价于(ASCII 范围)
[[:alnum:]]
字母或数字
[a-zA-Z0-9]
[[:alpha:]]
字母
[a-zA-Z]
[[:ascii:]]
ASCII 字符
\x00-\x7F
[[:blank:]]
空白(仅空格和制表符)
[ \t]
[[:cntrl:]]
控制字符
\x00-\x1F\x7F
[[:digit:]]
数字
[0-9]
[[:graph:]]
可打印字符(不含空格)
[!-~]
[[:lower:]]
小写字母
[a-z]
[[:print:]]
可打印字符(含空格)
[ -~]
[[:punct:]]
标点符号
[!"#$%&'()*+,\-./:;<=>?@[\\\]^_{
[[:space:]]
所有空白字符
[ \t\n\r\f\v]
[[:upper:]]
大写字母
[A-Z]
[[:xdigit:]]
十六进制数字
[0-9a-fA-F]
2.5、数组
承接变量名 数组值
declare -n ii=${i}
[root@euler-25-docker-01 ~]# a=(a b c d)
[root@euler-25-docker-01 ~]# b=(1 2 3)
[root@euler-25-docker-01 ~]# c=(a b c)
[root@euler-25-docker-01 ~]# d=(a a a)
[root@euler-25-docker-01 ~]# for i in ${a[@]}
> do
> declare -n ii=${i}
> echo ${ii[@]}
> done
a b c d
1 2 3
a b c
a a a
[root@euler-25-docker-01 ~]#