使用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
分享到:
相关推荐
在Linux环境中,`expect`是一个强大的自动化脚本工具,它允许程序员或系统管理员与交互式应用程序进行自动对话。这个工具由Trent Mick开发,并且基于Tcl语言,它极大地简化了自动化过程,尤其是那些需要用户输入的...
通过学习和使用这些资源,你不仅可以掌握如何在Linux环境中安装和使用Expect,还能了解到如何编写自动化脚本进行服务器管理,提升日常工作的效率。记得在实际操作中,安全性和权限控制都是至关重要的,确保你的自动...
在Linux自动化运维中,`expect`脚本是一个强大的工具,它可以自动交互地处理命令行程序,尤其是涉及到需要用户输入的情况,如SSH登录、输入密码等。`expect`结合`bash`环境,可以实现多会话管理,使得在多个远程主机...
### Linux下的Expect简单用法及举例 #### 一、引言 在Linux环境中,自动化运维是提高工作效率的重要手段之一。而`Expect`作为一种强大的自动化工具,可以用来模拟交互式会话,实现对远程服务器的自动登录、命令执行...
在Linux操作系统中,有时我们需要与命令行界面进行交互,例如在安装软件或配置网络时输入密码、确认选项等。为了自动化这些过程,`expect`...了解和掌握`expect`的使用,将对提升Linux系统的管理和维护能力大有裨益。
Expect 的实现代码可以使用 Tcl 语言,通过 Expect 的自动输入功能,实现远程登录的自动化。 Expect 的应用场景非常广泛,包括远程登录、远程操作、自动化测试等。 Expect 的优点包括: * 实现远程登录的自动化,...
`expect`脚本主要通过`spawn`命令启动一个进程,`expect`等待特定的输出,然后使用`send`命令发送输入,如此反复,直至完成自动化流程。这种自动化方式在管理远程服务器、执行SSH登录、自动备份、软件升级等场景中...
### Linux下的Expect交互式命令使用方法 #### 一、Expect简介 Expect 是一种自动化交互式命令行工具,它主要用于在 Linux 或 Unix 系统中控制交互式应用,例如 Telnet、SSH、FTP 和其他需要与用户进行交互的应用...
### Linux经典脚本expect的基本用法与示例详解 #### 一、expect简介与应用场景 在Linux环境下,系统管理员和开发人员经常会遇到需要自动化执行的任务,尤其是那些涉及到远程登录、文件传输等交互式操作的场景。...
在Unix/Linux系统中,可以通过包管理器来安装,例如在Ubuntu/Debian上使用`apt-get`: ```bash sudo apt-get update sudo apt-get install expect ``` 在CentOS/RHEL上,可以使用`yum`或`dnf`: ```bash sudo yum...
首先,我们需要理解`expect`的基本用法。`spawn`命令用于启动一个新的进程,例如打开一个shell会话或运行特定的程序。例如,你可以这样使用`spawn`来打开一个SSH连接: ```bash #!/usr/bin/expect spawn ssh user@...
9. **与Unix/Linux工具集成**:`expect`可以与各种Unix/Linux工具结合使用,如`ssh`、`ftp`、`telnet`等,实现自动化任务。 10. **学习资源**:要深入学习`expect`,可以查阅其官方文档,以及在线教程和论坛,如...
Expect 使用Tcl作为脚本语言,通过模拟用户输入和解析程序的响应来自动化这些过程。这对于配置网络设备、管理系统、运行需要交互的命令等任务非常有用。 **Tcl 语言** Tcl(Tool Command Language)是一种解释型的...
总的来说,Linux Expect 提供了一种强大且灵活的方法来自动化那些需要用户交互的任务,极大地提高了运维效率,特别是在需要大量手动操作的场景下。通过熟练掌握 Expect,IT专业人员可以编写出高效的自动化脚本,减少...
这个教程将指导你如何使用expect来实现定时登录,并解决kinit认证过期的问题。 首先,我们来了解下expect的基本概念。Expect是Tcl语言的一个扩展,由Don Libes在1990年代初开发,用于自动化那些需要用户交互的程序...
总结起来,`expect`和`TCL`的组合提供了一种强大且灵活的方法来自动化远程Linux系统的管理任务。通过学习和熟练掌握这两个工具,IT管理员和开发者可以显著提高工作效率,减少手动操作带来的错误和时间消耗。通过下载...
下面我们将详细介绍expect的一些关键概念和使用方法: 1. **基本结构**:一个expect脚本通常包含`spawn`、`expect`和`send`三个主要部分。`spawn`用于启动一个进程,例如打开一个telnet或ssh连接;`expect`则等待并...
在Linux环境中,`expect`是一个强大的自动化工具,它允许用户编写脚本来自动交互与命令行接口(CLI)程序...熟练掌握`expect`的安装和使用,可以极大地提升Linux系统管理的效率,特别是在自动化执行需要交互的任务时。