`
- 浏览:
73951 次
- 性别:
- 来自:
北京
-
[转]expect spawn、linux expect - 每天积累一点
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://sysop.blogbus.com/logs/70787883.html
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。
脚本代码如下:
##############################################
#!/usr/bin/expect
set timeout 30
spawn ssh -l username 192.168.1.1
expect "password:"
send "ispass\r"
interact
##############################################
1. [#!/usr/bin/expect]
这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。
注意:这一行需要在脚本的第一行。
2. [set timeout 30]
基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒
3. [spawn ssh -l username 192.168.1.1]
spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。
它主要的功能是给ssh运行进程加个壳,用来传递交互指令。
4. [expect "password:"]
这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒
5. [send "ispass\r"]
这里就是执行交互动作,与手工输入密码的动作等效。
温馨提示: 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。
6. [interact]
执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行
#!/usr/bin/expect #注意安装的路径,不确定 whereis expect 一下
# Change a login shell to bash
set user [lindex $argv 0]
spawn bash $user
expect "]:"
send "/bin/bash "
expect eof
exit
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
首先,"expect-5.21-for-win.rar"是一个压缩包,包含了在Windows环境下运行Expect 5.21所需的所有文件。解压后,通常会包含可执行文件、库文件以及相关的文档资料。安装过程相对简单,只需将解压后的文件复制到系统...
在Windows系统下,我们可以通过"expect-5.21r1b1-setup.zip"这个压缩包来安装Expect,让这一利器在Windows平台上发挥出应有的效能。 "expect-5.21r1b1-setup.zip"是一个针对Windows系统的Expect安装包,它的主要...
文件`expect-5.43.0.tar.gz`是Expect的源代码包。安装步骤与TCL类似: 1. 解压源码包: ``` tar -zxvf expect-5.43.0.tar.gz ``` 2. 进入解压后的目录: ``` cd expect-5.43.0 ``` 3. 需要确保TCL库已经...
在Linux和Unix操作系统中,自动化运维是提升效率和...通过深入学习和实践,Expect和Tcl的组合能成为Linux和Unix管理员的强大助手,实现高效、可靠的自动化运维。这个安装包提供的资源将帮助你快速上手并掌握这项技术。
Expect 软件包可以在大多数 Linux 发行版的软件仓库中找到,使用以下命令安装 Expect: ``` yum -y install expect ``` Expect 的基本语法 ---------------- Expect 的基本语法非常简单,主要包括以下几个部分: ...
在Linux环境中,`expect`是一个强大的自动化脚本工具,它允许程序员或系统管理员与交互式应用程序进行自动对话。这个工具由Trent Mick开发,并且基于Tcl语言,它极大地简化了自动化过程,尤其是那些需要用户输入的...
rpm -ihv expect-devel-5.43.0-8.el5.i386.rpm ``` 如果使用其他包管理器(如Debian/Ubuntu),也可以通过相应的命令进行安装。例如,在Debian/Ubuntu上,可以使用`apt-get`命令安装`Expect`: ```bash sudo apt-...
首先,你需要下载两个关键的安装包:`tcl8.4.13-src.tar.gz`和`expect-5.43.0.tar.gz`。`tcl8.4.13`是`expect`所依赖的基础库,而`expect-5.43.0.tar.gz`则是`expect`工具本身。在开始安装前,确保你的Linux系统已经...
`Expect`在Windows下的安装文件通常是带有`.exe`扩展名的可执行程序,例如`expect-5.21r1b1-setup.exe`,这是一个特定版本的`Expect`安装程序。下面将详细介绍在Windows环境下安装和使用`Expect`的过程以及相关知识...
在Linux自动化运维中,`expect`脚本是一个强大的工具,它可以自动交互地处理命令行程序,尤其是涉及到需要用户输入的情况,如SSH登录、输入密码等。`expect`结合`bash`环境,可以实现多会话管理,使得在多个远程主机...
总的来说,`expect`是Linux自动化运维中的得力工具,它简化了与命令行交互的任务,提升了效率,尤其是在需要大量重复操作的环境中。了解和掌握`expect`的使用,将对提升Linux系统的管理和维护能力大有裨益。
【expect安装包】是针对Unix/Linux环境中的一种自动化脚本工具,它主要被设计用来自动处理交互式的命令行程序。这个工具软件的核心是Tcl(Tool Command Language),这是一种动态类型的脚本语言,以其简洁和强大的...
`expect-5.21-setup.exe`则很可能是 Expect 在 Windows 下的安装程序,版本号为 5.21。在安装前,建议先阅读 `readme.txt`,了解软件的详细信息,遵循其中的步骤进行安装。 在实际使用 Expect 时,你需要学习 ...
编写`Expect`脚本时,通常会用到如`spawn`, `expect`, `send`等关键字来控制程序流程。例如,一个简单的`SSH`登录脚本可能是这样的: ```tcl #!/usr/bin/expect spawn ssh user@example.com expect "password:" ...
### Linux下的Expect交互式命令使用方法 #### 一、Expect简介 Expect 是一种自动化交互式命令行工具,它主要用于在 Linux 或 Unix 系统中控制交互式应用,例如 Telnet、SSH、FTP 和其他需要与用户进行交互的应用...
打开crontab配置文件(`crontab -e`),添加一条定时任务,例如每天凌晨3点运行expect脚本: ```bash 0 3 * * * /path/to/your/login_script.sh ``` 记得替换`/path/to/your/login_script.sh`为你的expect脚本实际...
### 使用Expect实现自动切换用户及执行命令 #### 一、Expect简介 `Expect`是一种用于自动化交互式命令的工具,它能模拟用户与基于文本的交互式程序进行对话。通过编写脚本来控制这些对话,我们可以实现一系列自动...
在Linux环境下安装Expect通常很简单,可以通过包管理器进行安装。例如,在基于RPM的系统中,可以使用yum安装Expect: ``` yum install expect -y ``` 安装完成后,可通过运行`which expect`命令来确认expect工具...