expect 能够通过捕获脚本的输出,模拟控制台的输入,从而实现自动交互。
这里用这个命令是为了实现免登陆。
免登陆的原理是,通过ssh-keygen -t dsa 生成dsa密钥,然后将密钥传递到目标机器的~/.ssh/authorized_keys 文件,即可实现免登。
但是在传递密钥时依然是需要输入密码的,如果机器比较多,再一个一个的输入就比较麻烦了,私用expect拦截脚本输出,然后发送密码的方式比较爽。
expect 通过spawn 命令执行shell命令,然后产生的输出能够通过expect命令捕获,再根据捕获到的内容,通过send _string 将需要输入的内容模拟输入。
#! /usr/bin/expect
set timeout 5
set host [lindex $argv 0]
set pwd [lindex $argv 1]
spawn scp /home/dilu.kxq/.ssh/id_dsa.pub ${host}:/home/dilu.kxq/
set done 1
while { $done } {
expect {
-re ".*assword:" { send "$pwd\r" }
-re ".*yes" { send "yes\r" }
-re ".*id_dsa.*" { send "\r" }
-re ".*agin" { send "\r" }
eof { set done 0 }
}
}
这里是一个完成的,用于向远端机器发送文件的脚本。
注意, -re 是使用正则表达式匹配;
send "_string\r"里面的 \r 是从发送命令返回,如果没有 \r , 发送命令将不会返回。
分享到:
相关推荐
Expect 是一种工具,主要用于实现自动化交互式的操作,它由 Don Libes 开发,基于 Tcl(Tool Command Language)语言。通过使用 Expect,可以将原本需要手动进行的操作,例如 SSH 登录、FTP 登录等,编写成脚本自动...
在实际应用中,Expect 往往与 Bash 或其他Shell脚本结合使用,以实现更复杂的自动化流程。通过在Shell脚本中调用 Expect 脚本,可以实现整个工作流程的自动化。 五、学习资源 本教程提供了一个全面的 Expect 简介和...
Shell脚本中的Expect工具是一种强大的自动化工具,它扩展了Shell脚本的能力,使其能够处理需要用户交互的任务。Expect是基于TCL语言构建的,它的主要目的是自动化那些需要手动输入响应的程序,例如SSH登录、telnet...
在Windows操作系统环境中,虽然原生不支持Unix-like的shell脚本,但通过工具如Expect,我们可以实现类似的功能,进行命令行程序的自动化交互。Expect是Tcl语言的一个扩展,专门设计用来自动控制交互式应用程序,如...
在 Expect 脚本中,你可以使用TCL语法来定义变量、执行条件语句、循环以及调用其他TCL或C编写的函数。 结合标签“shell”,我们可以推断这个压缩包也可能包含了如何在shell环境中使用expect和tcl的示例或教程。...
### 利用expect命令实现Shell自动化交互的方法详解 #### 背景介绍 在Linux环境中,经常需要执行一些远程操作,比如通过SSH进行远程登录、使用SCP进行远程文件复制、或者利用SFTP进行文件传输等。这些操作通常涉及...
`expect`工具正是这样一个强大的自动化脚本工具,尤其在处理交互式协议如SSH(Secure Shell)、FTP(File Transfer Protocol)和TELNET时,它能模拟用户输入,使得自动化过程变得更加简单。本文将深入探讨`expect`...
- **学习曲线**:尽管基于 Tcl,但对于初学者来说,掌握 Expect 的命令和语法仍需一定时间。 #### 六、总结 Expect 作为一款用于控制交互式程序的工具,极大地提高了 Unix 环境下的自动化水平。通过对传统 Shell ...
分别有以下这些内容的资料 Linux与unix shell编程指南 Bash参考手册 Expect中文教程 Expect简介和应用 Expect命令基本语法 高级Bash脚本编程指南 高级Shell脚本编程 Shell命令合集
3. **Expect脚本编写**:通过实例学习如何编写expect脚本,包括如何创建交互式的shell会话、自动化网络连接、读写文件等。 4. **进程控制**:理解如何用 Expect 进行进程通信,如管道、重定向和子进程管理,以便更...
15. **shell_expect**:这是一个特殊的工具,结合了Shell脚本和expect工具,用于自动化交互式应用程序,如telnet、ssh等。 在"shell编程打包整理"这个主题中,你将学到如何编写高效、健壮的Shell脚本,实现自动化...
- **类Shell语法**:TCL的语法风格类似于Unix Shell,使得习惯于Shell编程的开发者能够快速上手。 - **低内存占用**:TCL拥有较低的内存占用率,这使得它在资源受限的环境中也能表现出色。 #### 二、TCL基础知识 #...
1. **Unix/Linux Shell脚本**:了解基础的shell语法,如变量赋值、条件语句、循环结构等,因为`expect`脚本是在shell环境中运行的。 2. ** Expect语言**:`expect`是一种Tcl的扩展,用于自动处理基于文本的交互式...
1. `bin` 目录:包含Tcl和Expect的可执行文件,例如`tclsh85.exe`(Tcl shell)和`exp_internal.exe`( Expect 的核心部分)。 2. `lib` 目录:存储Tcl和Expect的库文件,这些库文件在运行时被解释器加载以提供相关...
同时,`expect`可以与其他工具结合使用,比如`Ansible`的`shell`或`command`模块,通过`expect`模块来实现更高级的自动化控制。 总之,`expect`工具和TCL语言的结合,为Linux环境下的远程服务器自动化管理提供了...
- **为expect脚本定制参数的shell脚本**:如何编写shell脚本来定制expect脚本的行为。 - **让telnet的expect脚本自动执行**:介绍了一个示例,演示如何自动化telnet会话。 #### 第18章 用户输入超时 - **手动实现...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。《跟老男孩学Linux运维:Shell编程实战》第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...