常用配置

85
  • 1、 ansible
    • 1.1、 主机清单
  • 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 ~]#