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

交互式shell脚本实操

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

交互式shell脚本实操

        在Linux 编程中有时我们会用到shell脚本来帮我们做一些事情,但涉及到交互中需要人为交互的部分如果想自动化运行就比较麻烦,但shell操作中其实是考虑到这点的。下面我以一个例子来简要的说明,当然网上有很多相关的描述,只是信息较杂乱,不够直接明了。

        

 #首先介绍一下用到的命令:expect
expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ] 

    选项 

         -c:从命令行执行expect脚本,默认expect是交互地执行的   

               示例:expect -c 'expect "n" {send "pressed entern"}' 

         -d:输出调试信息   

               示例:expect  -d ssh.exp

          expect中的相关命令 

                spawn:启动新的进程 

                send:向进程发送字符串 

                expect:从进程接收字符串 

                interact:允许用户交互

                exp_continue  匹配多个字符串时在执行动作后加此命令 

 

     expect最常用的语法(tcl语言:模式-动作) 

        单一分支模式的语法: 

              expect "hi" { send "You said hin" }           匹配到 hi 后,会输出"you said hi",并换行

        多分支模式的语法: 

              expect "hi" { send "You said hin" }  "hehe" { send “Hehe yourselfn" }  "bye" { send "Goodbyen" } 

        匹配 hi, hehe, bye 中的任意字符串时, 发送相应字符串。等同于:

              expect { "hi" { send "You said hin" } "hehe" { send "Hehe yourselfn" } "bye" { send "Goodbyen" } } 

#expect安装:

根据你的系统不同,执行不同命令即可,简单这就不描述了。例如:yum -y install expect

OK,到这里是不是有点不耐烦了。。。接下来直接上一个例子,马上上手。。。。

#expect使用:

先来看一个场景:

 

 此场景是需要使用 adduser 命令添加一个用户。期间需要用户交互的输入密码及确认密码的操作,这种在自动运行过程中认为不能干预,如果我们想系统自动化运行只能依靠脚本实现。

接下来看实现此功能的脚本

#!/usr/bin/expect
#创建用户命令:adduser ftp
#匹配password:字符串,然后输入123456n  exp_continue 表示可以多次匹配就需要用到

set timeout 30

spawn adduser ftp
expect {
     "password:" { send "123456n";exp_continue }
}

spawn adduser nobody
expect {
     "password:" { send "123456n";exp_continue }
}

expect eof

这里用到了 #!/usr/bin/expect 解释;"password:" 就是我们期望匹配的字符。send 用于匹配期望后发送用户的输入,这里也就是我们的密码;是不是很简单。。。


创作不易,您的点赞+收藏是对我最大的支持

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

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

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