欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 userecho"user echo "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  //查看谁连你
相关标签: shell脚本