shell脚本编程-变量初值处理、expect交互
程序员文章站
2022-07-10 11:19:02
...
shell脚本编程-变量初值处理、expect交互
变量的初值:字符串初值设置:
语法结构:
${var:-word}
//如果未定义变量的值,默认输出word
//如果定义了变量的值,输出定义好的变量值
实例:
创建一个脚本,实现,交互式的创建用户和密码,
如果用户未设置密码,则默认密码是123456
#!/bin/bash
read -p "请输入用户名:" user
read -p "请输入密码:" pass
id -u $user
[ $? -eq 0 ] && exit
[ $UID -ne 0 ] && exit
[ -z $user ] && exit
!!! pass=${pass:-123456}
useradd pass"| passwd --stdin $user
传递多行值给命令:
#命令 << EOF
sdfjh
kakjsddn
aslkkn
EOF
应用场景是发邮件。mail
#mail -s test root << EOF
tset mail
hello word
EOF
expect预期交互:
for i in `cat ipaddress.txt`
do
ssh $i
mkdir /abc
yum -y install mysgl
exit
done
ssh 49.233.65.157
ssh :
第一次登陆会让你输入是否接受公钥
第二次登陆会直接输入密码
1.需要安装expect 工具
#yum -y install expect
#which expect
2.实现免交互登录:
#vim expect.sh
#!/bin/bash
ssh 49.233.65.157
expect << EOF
spawn ssh 49.233.65.157 //创建一个交互式进程
expect "password" { send "密码\r" } //自动发送密码
expect "#" {send "pwd >tmp/$USER.txt \r"} //发送命令
expect "#" {send "exit \r"}
EOF
#!/bin/bash
for i in `seq 10`
do
expect << EOF
spawn ssh 49.233.75. 86
expect password:" { send " zhangxuyang1215.. \r" }
expect "#"{ send "touch /abc/a. txt \r"}
expect "#"{ send exit \r" }
EOF
done
ssh 不希望出现yes/no的情况
ssh -o StrictHostKeyChecking=no IP地址
#who am i //查看谁连你