Linux expect工具简单示例

expect安装命令

yum -y install expect

脚本代码如下:

#!/usr/bin/expect

set timeout 30

spawn ssh -l username 192.168.1.1

expect "password:"

send -- "ispass\r"  //--可加也可不加

interact

脚本文件执行需要使用shell命令 :expect  filename 来执行

命令详细解释

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
执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行一段命令就退出,可改为expect eof

时间: 2024-10-14 17:12:49

Linux expect工具简单示例的相关文章

linux expect的简单用法及举例

一.expect简介 我们通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能.而Expect就使用来实现这种功能的工具. Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预.Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [

Linux字符设备简单示例

1. Linux字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现open.close.read和write系统调用.例如:串口.Led.按键等. 2. 通过字符设备文件(/dev/),应用程序可以使用相应的字符设备驱动来控制字符设备 3. 创建字符设备文件的方法一般有两种 (1)使用命令mknod : mknod /dev/文件名  c 主设备号 次设备号 (查看主设备号:cat /proc/devices) (2)使用函数在驱动程序中创建 4. 字符设备通用设计

Linux网络编程简单示例

linux 网络编程是通过socket(套接字)接口实现,Socket是一种文件描述符,socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开-读/写-关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件. socket 类型 常见的socket有3种类型如下.     (1)流式socket(SOCK_STREAM )     流式套接字提供可靠

linux expect工具使用

shell脚本需要交互的地方可以使用here文档是实现,但是有些命令却需要用户手动去就交互如passwd.scp,对自动部署免去用户交互很痛苦,expect能很好的解决这类问题. expect的核心是spawn expect send set spawn 调用要执行的命令等待命令提示信息的出现,也就是捕捉用户输入的提示: send 发送需要交互的值,替代了用户手动输入内容 set 设置变量值 interact 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了.如果没有这一句登

Linux awk工具简单学习记录

awk是一个文本分析工具,它把文件逐行读入,以特定符号将每行切分(默认空格为分隔符),切开的部分再进行各种分析处理. awk其名称得自于它的创始人Alfred Aho .Peter Weinberger 和Brian Kernighan 姓氏的首个字母. 事实上,awk有4个不同版本:awk.nawk和gawk,还有一个是mawk.gawk 是AWK的GNU版本,通常未作特别说明的awk一般指的是gawk.在RedHat系统中,默认是gawk,而在Ubuntu系统中,默认是mawk.如果需要使用

jackson - 生成jason工具-简单示例

主页: http://jackson.codehaus.org/ https://github.com/FasterXML/jackson 当前jackson分为三部分,需要分别下载: jackson-annotations-2.5.0.jar,jackson-core-2.5.0.jar,jackson-databind-2.5.0.jar java bean: package com.srie.test.json; import java.io.IOException; import com

[pthread]Linux C 多线程简单示例

#include <stdio.h> #include <pthread.h> pthread_mutex_t mutex; pthread_cond_t cond; void *thread1(void *arg) { pthread_cleanup_push(pthread_mutex_unlock,&mutex); //提供函数回调保护 while(1){ printf("thread1 is running\n"); pthread_mutex_

Linux - 通过expect工具实现脚本的自动交互

目录 1 安装expect工具 2 expect的常用命令 3 作用原理简介 3.1 示例脚本 3.2 脚本功能解读 4 其他脚本使用示例 4.1 直接通过expect执行多条命令 4.2 通过shell调用expect执行多条命令 5 spawn not found 的解决 1 安装expect工具 expect是建立在tcl基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信. 其交互流程是: spawn启动指定进程 -> expect获取指定关键字

Linux内核模块简单示例

1. Linux 内核的整体结构非常庞大,其包含的组件也非常多,使用这些组件的方法有两种: ① 直接编译进内核文件,即zImage或者bzImage(问题:占用内存过多) ② 动态添加 * 模块本身并不被编译进内核文件 * 根据需求,在内核运行期间动态安装或卸载 2. 内核模块动态安装与卸载 ①安装 insmod 例:insmod /home/dnw_usb.ko ②卸载 rmmod 例:rmmod dnw_usb ③查看 lsmod 例: lsmod 3. 模块声明 ① MODULE_LICE