#! /usr/bin/expect -f
set timeout 3
spawn sudo apt-get install rake
expect "*sudo] password*"
send "123456\r"
expect "*@ubuntu-Box:~$*"
spawn sudo apt-get install htop
expect "*sudo] password*"
send "123456\r"
interact
文件名:ev.expect 终端下执行:./ev.expect
================================================
1。首先确认expect的包要安置。
[[zhuying@SOR_SYS opt]$ rpm -qa | grep expect
如果没有则需要下载安装,我安装的是expect-5.42.1-1.x86_64.rpm和expect-devel-5.42.1-1.x86_64.rpm
安装过后会显示:
[[zhuying@SOR_SYS opt]$ rpm -qa | grep expect
expect-5.43.0-5.1
expect-devel-5.42.1-1
2.查看expect的路径,可以用
[zhuying@SOR_SYS opt]$ which expect
/usr/bin/expect
[zhuying@SOR_SYS opt]$ view autosu.sh
3。确定脚本有可执行权限
chmod +x autosu.sh
#!/usr/bin/expect -f//这个expect的路径就是用which expect 查看的结果
spawn su - oracle //切换用户
expect "password:" //提示让输入密码
send "99billzy \r"//输入oracle的密码
interact //操作完成
这在root用户切换到oracle用户的时候特别的快,但是在其他用户切换到oracle的时候则需要等待一段时间!
另外需要注意的是:
不能按照习惯来用sh autosu.sh 来这行expect的程序,会提示找不到命令,如下:
autosu.sh: line 3: spawn: command not found
couldn't read file "password:": no such file or directory
autosu.sh: line 5: send: command not found
autosu.sh: line 6: interact: command not found
因为expect用的不是bash所以会报错。执行的时候直接./autosu.sh 就可以了。~切记!
来自:http://tomhibolu.iteye.com/blog/1214769
用的Ubuntu,本身没带expect,安装。
sudo apt-get install expect
2 写脚本 sample.script
下面是简单的一个例子,把登录名和密码都显式地写在脚本里。
#!/usr/bin/expect -f
#auto ssh login
set timeout 20
spawn ssh login_name@host_name
expect “*password:”
send “123456/r”
interact
上面的脚本中,spawn命令激活一个Unix程序来进行交互式的运行。send命令向进程发送字符串。expect命令等待进程的某些字符串。 expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作。expect还能理解一些特殊情况,如超时和遇到文件尾。
如果希望脚本有一定的通用性,比如通过参数方式来输入用户名和主机地址。那么脚本可以象这样:
#!/usr/bin/expect -f
#auto ssh login
set timeout 20
set login_name [lindex $argv 0]
set host_name [lindex $argv 1]
spawn ssh $login_name@$host_name
expect “*password:”
send “123456/r”
interact
这样执行的时候$argv 0 就是输入的第一个参数, $argv 1 就是输入的第二个参数
3 给脚本加上可执行权限
chmod +x sample.script
如果文件默认有其它权限,建议最好设置为只能自己读取,修改和执行
chmod 700 sample.script
接着就可以通过执行脚本进行远程登录了 ./sample.script
=====================================================
管理员往往有这样的需求,希望根据当前的具体情况来以不同的方式对一个命令进行响应。我们可以通过后面的例子看到expect可以实现非常复杂的条件响应,而仅仅通过简单的修改预处理脚本就可以实现。下面的例子是一个更复杂的expect-send例子:
expect -re "\[(.*)]:"
if {$expect_out(1,string)!="/bin/tcsh"} {
send "/bin/tcsh" }
send " "
expect eof
在这个例子中,第一个expect命令现在使用了-re参数,这个参数表示指定的的字符串是一个正则表达式,而不是一个普通的字符串。对于上面 这 个例子里是查找一个左方括号字符(其必须进行三次逃逸(escape),因此有三个符号,因为它对于expect和正则表达时来说都是特殊字符)后面跟有 零个或多个字符,最后是一个右方括号字符。这里.*表示表示一个或多个任意字符,将其存放在()中是因为将匹配结果存放在一个变量中以实现随后的对匹配结 果的访问。
当发现一个匹配则检查包含在[]中的字符串,查看是否为/bin/tcsh。如果不是则发送/bin/tcsh给chsh命令作为输入,如果是则仅仅发送一个回车符。这个简单的针对具体情况发出不同相响应的小例子说明了expect的强大功能。
在一个正则表达时中,可以在()中包含若干个部分并通过expect_out数组访问它们。各个部分在表达式中从左到右进行编码,从1开始(0包含有整个匹配输出)。()可能会出现嵌套情况,这这种情况下编码从最内层到最外层来进行的。
相关推荐
关于自动化脚本expect的一个例子。本脚本功能是 实现自动输入密码登录到一个server机器上。
### Expect脚本学习教程与范例 #### 一、Expect简介及应用场景 **Expect** 是一个免费且强大的编程工具,主要用于实现自动化与交互式的任务处理,尤其适用于那些原本需要人工干预的任务。它允许用户创建脚本来自动...
通过使用 Expect,可以将原本需要手动进行的操作,例如 SSH 登录、FTP 登录等,编写成脚本自动执行。这在需要对多台服务器执行相同操作的场景下尤其有用,能够显著提高系统管理员的工作效率。 ### 2. 安装 Expect ...
### Tcl语言与Expect脚本详解 #### 一、Tcl语言概述 Tcl(发音为“tickle”),全称为Tool Command Language(工具命令语言),是一种简单易学且具有高度可扩展性的脚本语言。Tcl的核心优势在于其简洁的语法和强大...
"Expect Window 版本"指的是将 Expect 脚本语言集成到 Windows 操作系统中的工具。Expect 是一种用于自动化交互式应用程序的脚本语言,它最初是为类 Unix 系统设计的,但通过特定的版本或实现,也能在 Windows 下...
通过本文,我们了解了expect这一强大工具的基本概念、工作原理及其应用场景,并通过一个具体的示例深入了解了expect脚本的编写方法。expect不仅能够极大地提高系统的运维效率,还能够降低人为错误的风险,是Linux...
Expect脚本安装和简单脚本示例 Expect脚本是一种强大的自动交互工具,它可以模拟用户的交互行为,自动输入密码、命令等,从而实现自动化任务。下面是 Expect 脚本的安装和简单脚本示例。 Expect 脚本安装 --------...
打开crontab配置文件(`crontab -e`),添加一条定时任务,例如每天凌晨3点运行expect脚本: ```bash 0 3 * * * /path/to/your/login_script.sh ``` 记得替换`/path/to/your/login_script.sh`为你的expect脚本实际...
### Expect脚本编程知识点 #### 一、摘 要 Expect是一种自动化交互式脚本语言,主要用于控制基于文本的应用程序(例如telnet会话、ssh登录等)。它使用Tcl语言作为其基础,能够自动地模拟用户输入,并处理应用程序...
为了解决这个问题,我们可以利用expect脚本实现自动化登录,提高工作效率。Expect是Tcl语言的一个扩展,它允许我们编写能够与交互式程序进行对话的脚本。在这篇文章中,我们将详细介绍如何在Linux中使用expect脚本来...
- **解决方案:** 编写Expect脚本,利用脚本中的循环结构,实现文件的批量传输。 ##### 2. **远程系统管理** - **背景:** 网络管理员需要定期登录多台服务器进行检查或更新配置。 - **解决方案:** 使用Expect...
《使用 Expect 脚本实现自动化交互操作》 在 IT 领域,尤其是在系统管理和自动化运维中,Expect 是一个非常实用的工具。 Expect 软件允许编写脚本模拟用户与命令行程序的交互,尤其适用于那些需要输入密码、等待...
1. Expect 脚本的使用:Expect 是一个非常强大的工具,可以用来自动化交互式的 shell 会话。在本文档中,我们使用 Expect 来实现批量修改 Linux 服务器的密码。 2. SSH 的使用:SSH(Secure Shell)是一种安全的...
本人关于expect正则表达式应用的一点总结,因为去翻exploring expect比较费劲,就把正则表达式这常用的内容总结一下记在这了。
本文将探讨几个利用expect脚本实现自动化操作的小窍门,帮助你更高效地运用这个工具。 1. 使用`-c`选项执行expect脚本 当你需要快速运行一段简单的expect命令时,可以使用`-c`选项直接在命令行中执行。例如: ```...
该脚本需要配合java代码一起使用的哈,教程地址:...
该脚本需要配合java代码一起使用的哈,教程地址:...
通过编写expect脚本,运维人员可以将繁琐的重复工作自动化,显著提高工作效率。 首先,我们需要获取并安装expect的环境。在这个压缩包中,包含了tcl8.4.11-src.tar.gz和expect-5.43.0.tar.gz两个源码包。tcl是...
Chat 脚本由一系列 expect-send 对组成:expect 等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。 3. 安装 Expect Expect 需要 Tcl 编程语言的支持,要在系统上运行 Expect 必须首先安装 Tcl。...
安装过程中,"expect-5.21-setup.exe"可能会处理这些依赖关系,并将必要的组件添加到系统的路径中,使得用户可以直接在命令行中运行Expect脚本。 总的来说,"Expect 5.21 for Windows"为Windows用户提供了一个强大...