shell脚本解决自动交互的方法

本文介绍了四种在Shell脚本中实现自动交互的方法:1) 查看命令选项以实现自动交互;2) 使用输入重定向;3) 利用Here Document;4) 结合Expect工具。通过这些方法,可以自动化处理需要用户输入的情况。
摘要由CSDN通过智能技术生成

自动交互的方法
1.查看命令,看看有没有选项用来实现自动交互的。
[root@dbserver02 ~]# echo “123” | passwd --stdin a1
Changing password for user a1.
passwd: all authentication tokens updated successfully.

2.输入重定向
Passwd u1 < /tmp/a.txt

3.Here document
[root@LVM ~]# passwd a1 << eof

123
123
eof
Changing password for user a1.
New password: BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password: passwd: all authentication tokens updated successfully.

4.用expect来实现
安装expect
[root@LVM Packages]# rpm -ivh expect-5.44.1.15-5.el6_4.x86_64.rpm tcl-devel-8.5.7-6.el6.x86_64.rpm tcl-8.5.7-6.el6.x86_64.rpm
warning: expect-5.44.1.15-5.el6_4.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing… ########################################### [100%]
1:tcl ########################################### [ 33%]
2:expect ########################################### [ 67%]
3:tcl-devel ########################################### [100%]
expect 完成自动交互的任务

[root@mysqlserver01 scripts]# rpm -qa | grep “expect”
expect-5.44.1.15-5.el6_4.x86_64

expect内部命令:
spawn: 后面加上需要执行的shell命令,比如说spawn ssh root@172.16.1.1
expect: 只有spawn 执行的命令结果才会被expect 捕捉到,因为spawn 会启
动一个进程,只有这个进程的相关信息才会被捕捉到。
send:send 会将expect 脚本中需要的信息发送给spawn 启动的那个进程
send_user: 只在屏幕显示,不送给spawn 启动的那个进程,相当于echo

定义变量:
set
例如:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值