`
jxxms
  • 浏览: 107454 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

expect spawn、linux expect 用法小记

阅读更多

使用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

分享到:
评论

相关推荐

    expect的linux安装包

    在Linux环境中,`expect`是一个强大的自动化脚本工具,它允许程序员或系统管理员与交互式应用程序进行自动对话。这个工具由Trent Mick开发,并且基于Tcl语言,它极大地简化了自动化过程,尤其是那些需要用户输入的...

    linux expect安装及expect,tcl安装包

    通过学习和使用这些资源,你不仅可以掌握如何在Linux环境中安装和使用Expect,还能了解到如何编写自动化脚本进行服务器管理,提升日常工作的效率。记得在实际操作中,安全性和权限控制都是至关重要的,确保你的自动...

    multiple expect spawn session switching in Bash environment and example

    在Linux自动化运维中,`expect`脚本是一个强大的工具,它可以自动交互地处理命令行程序,尤其是涉及到需要用户输入的情况,如SSH登录、输入密码等。`expect`结合`bash`环境,可以实现多会话管理,使得在多个远程主机...

    linux下的expect的简单用法及举例-文档

    ### Linux下的Expect简单用法及举例 #### 一、引言 在Linux环境中,自动化运维是提高工作效率的重要手段之一。而`Expect`作为一种强大的自动化工具,可以用来模拟交互式会话,实现对远程服务器的自动登录、命令执行...

    linux实现交互执行:expect

    在Linux操作系统中,有时我们需要与命令行界面进行交互,例如在安装软件或配置网络时输入密码、确认选项等。为了自动化这些过程,`expect`...了解和掌握`expect`的使用,将对提升Linux系统的管理和维护能力大有裨益。

    用Expect实现Linux自动远程登陆.pdf

    Expect 的实现代码可以使用 Tcl 语言,通过 Expect 的自动输入功能,实现远程登录的自动化。 Expect 的应用场景非常广泛,包括远程登录、远程操作、自动化测试等。 Expect 的优点包括: * 实现远程登录的自动化,...

    linux下expect的安装方法

    `expect`脚本主要通过`spawn`命令启动一个进程,`expect`等待特定的输出,然后使用`send`命令发送输入,如此反复,直至完成自动化流程。这种自动化方式在管理远程服务器、执行SSH登录、自动备份、软件升级等场景中...

    linux expect

    ### Linux下的Expect交互式命令使用方法 #### 一、Expect简介 Expect 是一种自动化交互式命令行工具,它主要用于在 Linux 或 Unix 系统中控制交互式应用,例如 Telnet、SSH、FTP 和其他需要与用户进行交互的应用...

    Linux经典脚本expect的示例及基本用法

    ### Linux经典脚本expect的基本用法与示例详解 #### 一、expect简介与应用场景 在Linux环境下,系统管理员和开发人员经常会遇到需要自动化执行的任务,尤其是那些涉及到远程登录、文件传输等交互式操作的场景。...

    expect5.45

    在Unix/Linux系统中,可以通过包管理器来安装,例如在Ubuntu/Debian上使用`apt-get`: ```bash sudo apt-get update sudo apt-get install expect ``` 在CentOS/RHEL上,可以使用`yum`或`dnf`: ```bash sudo yum...

    linux编写脚本使用expect正则表达式 教程

    首先,我们需要理解`expect`的基本用法。`spawn`命令用于启动一个新的进程,例如打开一个shell会话或运行特定的程序。例如,你可以这样使用`spawn`来打开一个SSH连接: ```bash #!/usr/bin/expect spawn ssh user@...

    expect for redhat linux as4

    9. **与Unix/Linux工具集成**:`expect`可以与各种Unix/Linux工具结合使用,如`ssh`、`ftp`、`telnet`等,实现自动化任务。 10. **学习资源**:要深入学习`expect`,可以查阅其官方文档,以及在线教程和论坛,如...

    linux/unix下expect5.45+tcl工具安装包、使用说明及范例

    Expect 使用Tcl作为脚本语言,通过模拟用户输入和解析程序的响应来自动化这些过程。这对于配置网络设备、管理系统、运行需要交互的命令等任务非常有用。 **Tcl 语言** Tcl(Tool Command Language)是一种解释型的...

    Linux expect 介绍和用法

    总的来说,Linux Expect 提供了一种强大且灵活的方法来自动化那些需要用户交互的任务,极大地提高了运维效率,特别是在需要大量手动操作的场景下。通过熟练掌握 Expect,IT专业人员可以编写出高效的自动化脚本,减少...

    linux-expect模拟键盘输入实现定时登录教程.zip

    这个教程将指导你如何使用expect来实现定时登录,并解决kinit认证过期的问题。 首先,我们来了解下expect的基本概念。Expect是Tcl语言的一个扩展,由Don Libes在1990年代初开发,用于自动化那些需要用户交互的程序...

    expect+tcl工具大合集,用于远程登陆到另外一台linux机器。

    总结起来,`expect`和`TCL`的组合提供了一种强大且灵活的方法来自动化远程Linux系统的管理任务。通过学习和熟练掌握这两个工具,IT管理员和开发者可以显著提高工作效率,减少手动操作带来的错误和时间消耗。通过下载...

    expect安装包

    下面我们将详细介绍expect的一些关键概念和使用方法: 1. **基本结构**:一个expect脚本通常包含`spawn`、`expect`和`send`三个主要部分。`spawn`用于启动一个进程,例如打开一个telnet或ssh连接;`expect`则等待并...

    linux expect安装软件 附安装文档

    在Linux环境中,`expect`是一个强大的自动化工具,它允许用户编写脚本来自动交互与命令行接口(CLI)程序...熟练掌握`expect`的安装和使用,可以极大地提升Linux系统管理的效率,特别是在自动化执行需要交互的任务时。

Global site tag (gtag.js) - Google Analytics