使用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
相关推荐
使用`gulp-expect-file`的步骤通常包括以下几步: 1. **安装**:首先,你需要在项目中安装`gulp-expect-file`。打开终端,进入项目目录,然后运行`npm install --save-dev gulp-expect-file`,这将把库作为开发依赖...
在Linux环境中,`expect`是一个强大的自动化脚本工具,它允许程序员或系统管理员与交互式应用程序进行自动对话。这个工具由Trent Mick开发,并且基于Tcl语言,它极大地简化了自动化过程,尤其是那些需要用户输入的...
### Linux下的Expect简单用法及举例 #### 一、引言 在Linux环境中,自动化运维是提高工作效率的重要手段之一。而`Expect`作为一种强大的自动化工具,可以用来模拟交互式会话,实现对远程服务器的自动登录、命令执行...
这个教程将指导你如何使用expect来实现定时登录,并解决kinit认证过期的问题。 首先,我们来了解下expect的基本概念。Expect是Tcl语言的一个扩展,由Don Libes在1990年代初开发,用于自动化那些需要用户交互的程序...
下面是一个简单的Expect脚本示例,展示如何使用Expect与SSH服务进行交互: ```tcl #!/usr/bin/expect spawn ssh user@host expect "password:" send "mypassword\r" expect "$" send "ls\r" expect "$" send "exit\...
通过学习和使用这些资源,你不仅可以掌握如何在Linux环境中安装和使用Expect,还能了解到如何编写自动化脚本进行服务器管理,提升日常工作的效率。记得在实际操作中,安全性和权限控制都是至关重要的,确保你的自动...
要安装paramiko-expect,只需在提示符下运行以下命令: # from pypi pip install paramiko-expect # from source pip install git+https://github.com/fgimian/paramiko-expect.git 因此,让我们检查一下它的总体...
`expect`脚本主要通过`spawn`命令启动一个进程,`expect`等待特定的输出,然后使用`send`命令发送输入,如此反复,直至完成自动化流程。这种自动化方式在管理远程服务器、执行SSH登录、自动备份、软件升级等场景中...
从标题“linux-expect”及描述“这个是一个不错的expect脚本文档学习典例,大家可以下载学习。”中可以看出,这份文档是关于如何在 Linux 系统中使用 Expect 脚本来自动化交互式任务的一个学习资源。 ### 一、...
在Expect中,有几个核心命令是必不可少的,包括`spawn`、`expect`和`exp_send`。下面详细介绍这些命令及其使用方式: 1. **`spawn`命令** `spawn`命令用于启动一个新的子进程,并将后续所有的`expect`操作绑定到...
下面我们将详细介绍expect的一些关键概念和使用方法: 1. **基本结构**:一个expect脚本通常包含`spawn`、`expect`和`send`三个主要部分。`spawn`用于启动一个进程,例如打开一个telnet或ssh连接;`expect`则等待并...
TCL Expect是一种用于自动化Linux和其他Unix系统中交互式应用程序的脚本语言。它建立在TCL(Tool Command Language)之上,使得程序员能够编写自动化脚本来处理那些通常需要用户手动输入的程序,如SSH登录、FTP传输...
**标题解析:** "前端开源库-expect-jsx.zip" 这个标题表明这是一个与前端开发相关的开源库,其中包含了 `expect-jsx` 模块。`expect-jsx` 是一个用于JavaScript对象(特别是React JSX)断言测试的库,通常在编写...
总的来说,"Send-and-expect.rar"提供的例子展示了LabVIEW结合expect思想处理串口通信的强大能力,尤其在处理大量数据读写和自动化测试方面。它可以帮助工程师更高效地实现工厂测试流程,降低人工干预,提升生产效率...
在Linux自动化运维中,`expect`脚本是一个强大的工具,它可以自动交互地处理命令行程序,尤其是涉及到需要用户输入的情况,如SSH登录、输入密码等。`expect`结合`bash`环境,可以实现多会话管理,使得在多个远程主机...
下面将详细探讨`expect`库的核心功能、使用方法以及它如何提升Go测试的可读性和效率。 首先,`expect`库的核心理念是采用BDD(Behavior Driven Development)风格,这种风格强调用自然语言来描述软件的行为,使得...
expect "github.com/Netflix/go-expect" ) func main () { c , err := expect . NewConsole ( expect . WithStdout ( os . Stdout )) if err != nil { log . Fatal ( err ) } defer c . Close () cmd := ...
Expect通过使用spawn命令启动一个进程,然后通过expect命令等待特定的输出,一旦匹配到,就可以发送相应的输入,从而实现与程序的交互。 以下是一个简单的示例,展示如何使用Expect模拟登录SSH服务器: ```tcl #!/...