今天小编就为大家带来shell编程中expect免交互的文章。小编觉得挺不错的,为此分享给大家做个参考。一起跟随小编过来看看吧。
成都创新互联是一家集网站建设,朝阳企业网站建设,朝阳品牌网站建设,网站定制,朝阳网站建设报价,网络营销,网络优化,朝阳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。备注:
expect “要捕捉的内容” {send "要输入的参数\r";}
\r 回车符
[root@localhost ~]# vim a.sh
#!usr/bin/ecpect //expect二进制文件的路径,
#设置环境
#超时时间
set timeout 9 //设置超时时间
log_file test.log //日志文件路径
log_user 1 //用户数量为1
#定义变量
set hostname [lindex $argv 0 ]
set password [lindex $argv 1 ]
#开启追踪spawn
spawn ssh root@$hostname //spawn 启动命令
#匹配条件,捕捉
expect { //按条件捕捉去send执行
"(yes/no)"
{send "yes\r";exp_continue}
"*passwor"
{send "$password\r"}
}
#权限转交控制台
interact
[root@localhost ~]# chmod +x a.sh
[root@localhost ~]# ./a.sh $argv0 $argv1
interact不要写在大括号里面
[gsy@localhost root]$ which expect
/usr/bin/expect
两个log可加可不加
set两个变量代表着传参
然后以spawn 去开启服务
exprct 去捕捉条件,中间send输出指令,\r回车,exp_continue继续匹配
[root@localhost ~]# vim b.sh
#!/bin/bash
hostname=$1
password=$2
/usr/bin/expect<<-EOF //expect开始EOF标志
spawn ssh root@$hostname
expect {
"(yes/no)"
{send "yes\r";exp_continue}
"*password"
{send "$password\r"}
}
expect "*]#" //检索是否以root登陆
send "exit\r"
expect eof
EOF //exprct结束标志,这个EOF不能有空格
[root@localhost ~]# source b.sh
java的全局变量指的是类文件为区域
shell的是所有bash环境都能识别
/usr/bin/expect<<-EOF 也可以视为声明expect 位置
spawn :以spawn模式执行操作,expect 才可以捕捉到
[root@localhost ~]# vim b.sh
#!/bin/bash
user=$1
mima=$2
/usr/bin/expect<<-EOF
spawn useradd $user
spawn passwd $user
expect {
"New password"
{send "$mima\r";exp_continue}
"new password"
{send "$mima\r"}
}
expect eof
EOF
[root@localhost ~]# chmod +x b.sh
[root@localhost ~]# ./b.sh qqq 965483
spawn useradd qqq
spawn passwd qqq
Changing password for user qqq.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# vim b.sh
[root@localhost ~]# id qqq
uid=1001(qqq) gid=1001(qqq) groups=1001(qqq)
正常登录
想要注释多行语句 可以在首部输入 :<
以上就是shell编程expect免交互的方法介绍,详细使用情况还得要大家自己使用过才能知道具体要领。如果想了解更多相关内容,欢迎关注创新互联行业资讯频道!
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。