栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

免交互Here Document和EXPECT

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

免交互Here Document和EXPECT

免交互Here Document和EXPECT

文章目录
  • 免交互Here Document和EXPECT
    • Here Document
    • Expect

Here Document

Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序,当shell看到< <的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。

使用Cat和EOF多行输入

cat >> /root/test.txt < 

示例:

#EOF写本地yum源(镜像挂载mnt下)

[root@localhost ~]# cat > wpc.repo <[wpc]
>name=wpc
>baseurl=file:///mnt
>enabled=1
>gpgcheck=0
>EOF
#给wpc用户修改密码

[root@localhost ~]# passwd wpc <971125
>971125
>EOF
Expect

建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题

使用expect需要依赖tcl语言,所以需要优先安装tcl和expect

yum -y install expect			#安装
rpm -q tcl						#检查安装
rpm -q expect					#检查安装
  • 使用expect编写脚本解释器需设置为#!/usr/bin/expect

  • spawn后面通常跟一个Linux执行命令,表示开启一个会话、启动进程,并跟踪后续交互信息

示例:

spawn passwd root
  • 判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回;只能捕捉由spawn启动的进程的输出;用于接收命令执行后的输出,然后和期望的字符串匹配。
  • send向进程发送字符串,用于模拟用户的输入;该命令不能自动回车换行,一般要加r (回车)或者n

示例:

expect "获取帮助" {send "nr";}
  • 结尾结束符expect eof,表示交互结束,等待执行结束,退回到原用户,与spawn对应,比如切换到root用户,expect脚本默认的是等待10s,当执行完命令后,默认停留10s后,自动切回了原用户

  • interact执行完成后保持交互状态,把控制权交给控制台,会停留在目标终端而不会退回到原终端,这个时候就可以手工操作了,
    interact后的命令不起作用

注: expect eof与interact只能二选一

  • set,expect默认的超时时间是10秒,通过set命令可以设置会话超时时间,若不限制超时时间则应设置为-1。

示例:

set timeout 30

示例:

#免交互划分磁盘
#!/usr/bin/expect

set user [lindex $argv 0]					#参数引入

spawn fdisk $user							#追踪

expect "获取帮助" {send "nr";}				#实现免交互,发送内容
expect "Select" {send "pr";}
expect "分区号" {send "r";}
expect "起始 扇区" {send "r";}
expect "Last 扇区" {send "+10Gr";}
expect "已设置为 Linux 类型" {send "wr"}

expect eof                      		  #结束符
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/827482.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号