Shell免交互

多行重定向

格式:

语法格式

命令<<   标记


...(输入内容)

标记

  • 标记可以使用任意的合法字符(通用的字符是EOF)
  • 结尾的标记一定要顶格写,前面不能有任何字符(包括空格)
  • 结尾的标记后面也不能有任何字符(包括空格)
  • 开头标记前后空格会被省略掉
  • 单引号 变量双引号 —

expect

expect是建立在tcl之上的一个工具,用于进行自动化控制和测试,解决shell脚本中交互相关的问题

expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ]

命令

命令 功能简介
spawn 启动一个新的进程
expect
send
send_user 向用户显示文本消息
interact 允许用户与当前spawn的进程进行交互。
sleep 暂停执行一定的时间
eof 等待到达文件结束,结束符
exit 退出当前的expect脚本

命令功能简介
spawn启动一个新的进程
expect等待输入中的特定模式或字符串
send发送文本到当前spawn的进程
send_user向用户显示文本消息
interact允许用户与当前spawn的进程进行交互
sleep暂停执行一定的时间
eof等待到达文件结束,结束符
exit退出当前的expect脚本

expect

判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回·
只能捕捉由spawn启动的进程的输出·
用于接收命令执行后的输出,然后和期望的字符串匹配
send
向进程发送字符串,用于模拟用户的输入;
该命令不能自动回车换行,需要配合\r使用,实现自动执行命令。
set

设置超时时间,过期则继续执行后续,指令单位是秒,默认为10秒。

otimeout-1表示永不超时

send user

相当于echo

exp continue

允许expect继续向下执行指令

脚本解释器

表明使用哪一个shell.
#!/usr/bin/expect

结束符

expect eof

退出脚本

exit

免交互实现传输文件

#!/usr/bin/expect
spawn scp /etc/fstab 192.168.118.30:/mnt
expect {
  "yes/no" { send "yes\n";exp_continue }
  "password" { send "123123\n" }
}

expect eof 

# \r也行

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值