Linux下用expect实现ssh自动登录并执行脚本
expect不是系统自带的,需要安装:
yum install expect
装完后才可执行以下脚本。
ssh密码认证的登陆脚本:
#!/bin/bash # 匹配提示符 CMD_PROMPT="\](\$|#)" # 要执行的脚本 script="/root/test.sh" username="root" password="123456" host="192.168.1.109" port=22 expect -c " send_user connecting\ to\ $host...\r # 空格要转义 spawn ssh -p $port $username@$host expect { *yes/no* { send -- yes\r;exp_continue;} *assword* { send -- $password\r;} } expect -re $CMD_PROMPT send -- $script\r expect -re $CMD_PROMPT exit " echo "\r"
ssh公钥认证的登陆脚本:
#!/bin/bash # 匹配提示符 CMD_PROMPT="\](\$|#)" # 要执行的脚本 script="/root/test.sh" username="root" password="123456" host="192.168.1.109" port=22 expect -c " send_user connecting\ to\ $host...\r spawn ssh -p $port $username@$host expect -re $CMD_PROMPT send -- $script\r expect -re $CMD_PROMPT exit " echo "\r"
1. send_user 是回显,相当于echo。
2. spawn 是开启新的进程
3. expect{ } 这是匹配上一条指令的输出,,比如上面spawn 那句执行完后,会提示你输入密码,提示语中会包含 password,因此就匹配*assword*,然后就send -- $password 把密码发过去。
4. send 就是发指令到对端
5. expect 内部有个exp_continue ,意思是重新匹配所在的expect,相当于while的continue
6. expect 的 -re 表示匹配正则表达式
ps:expect 内部的指令的参数中特殊字符需在前面加\转义
类似的还可实现ftp登陆,自动上传下载文件等等。
相关推荐
Expect 可以模拟用户交互,自动输入命令和参数,实现自动化登录、文件传输、数据备份等操作。下面我们将详细介绍如何使用 Expect 实现 SSH 登陆。 Expect 的安装 ---------------- Expect 软件包可以在大多数 ...
`expect`是一个基于TCL(Tool Command Language)的脚本语言,主要用于自动化那些需要用户交互的任务,它能够模拟用户对命令行的输入,极大地提高了工作效率。 `expect`的基本工作原理是通过读取脚本中的指令,监控...
标题提到的“自动登陆ssh,批量ip脚本操作”是指使用脚本自动化地通过SSH(Secure Shell)协议连接到多个具有不同IP地址的远程服务器。这种方法对于系统管理员来说非常实用,可以减少手动登录每个服务器的时间和工作...
例如,一个简单的SSH登录并执行命令的Expect脚本可能是这样的: ```bash #!/usr/bin/expect spawn ssh user@example.com expect "password:" send "yourpassword\r" expect "$ " send "ls -l /home/user/\r" ...
在Linux环境中,有时我们需要自动化执行一些需要交互的任务,比如定时登录到远程服务器。"expect"工具就是为此设计的,它可以模拟键盘输入,自动应答交互式程序,使得非脚本化的任务可以被脚本化处理。这个教程将...
在Linux环境中,`expect`是一个强大的自动化脚本工具,它允许程序员或系统管理员与交互式应用程序进行自动对话。这个工具由Trent Mick开发,并且基于Tcl语言,它极大地简化了自动化过程,尤其是那些需要用户输入的...
在Linux环境中,编写脚本以自动化执行任务是常见的需求,特别是在需要与系统进行交互或处理命令行工具时。`expect`工具就是为了解决这个问题而诞生的,它允许我们在脚本中模拟用户输入,尤其在需要输入密码或确认...
在Linux环境下,使用 Expect 可以编写一个自动登录脚本,例如 `login.sh`。这个脚本的核心在于四个主要的 Expect 指令: 1. **spawn**:这个命令用来启动一个新的进程,通常会是需要交互的应用程序,如 `ssh` 命令...
为了解决这一问题,这篇博文介绍了如何使用expect工具实现shell脚本中的SSH无交互自动登录。 expect工具是基于Tcl语言编写的,它能够通过自动化的方式响应程序输出的提示信息。在ssh命令执行时,expect可以用来捕获...
Linux Expect 是一个强大的自动化工具,它允许用户编写脚本来自动处理需要交互的程序,比如SSH登录、SCP文件传输等。Expect 基于TCL语言,因此在使用之前需要先安装TCL环境。本压缩包提供了Linux Expect的安装教程、...
Linux下的`expect`工具是一个强大的自动化管理利器,尤其适合处理那些需要交互式输入的脚本任务,比如自动登录、密码输入、脚本自动化等。它基于Tcl语言,通过模拟用户交互来自动化复杂的命令行操作。`expect`的安装...
在Linux系统中,expect命令是一种强大的工具,它允许用户编写自动化脚本来处理那些通常需要人工交互的...希望这篇内容能对你在Linux环境下使用expect编写自动化交互脚本有所帮助,并鼓励你去探索更多expect的高级功能。
在 Linux 服务器集群之间实现无密码的 SSH 登录可以降低服务器之间由 Linux 操作系统的安全设置所带来的不必要的损耗,并减少人工的干预。 Expect 是一个流行的自动化工具,能够模拟用户的交互式操作,实现自动化的...
下面是一个简单的`expect`脚本示例,用于SSH登录并执行`ls -la`命令: ```bash #!/usr/bin/expect spawn ssh 192.168.1.241 expect "password:" send "123456\r" expect "]#" send "ls -la\r" interact ``` ### 多...
例如,使用Expect自动登录远程服务器的脚本可能包括以下步骤: 1. 使用`spawn`命令启动一个进程,例如一个ssh会话。 2. 使用`send`命令向进程发送输入。 3. 使用`expect`命令等待特定的输出。 4. 使用`interact`...
而`Expect`作为一种强大的自动化工具,可以用来模拟交互式会话,实现对远程服务器的自动登录、命令执行等功能。本文将详细介绍`Expect`的基本用法及其应用场景,并通过具体示例来帮助读者更好地理解和掌握。 #### ...
`expect`是一个Tcl扩展,专门用来自动化交互式程序,如SSH登录、FTP传输等。我们可以创建一个小型的`expect`脚本来自动发送密码给`sudo`。以下是一个简单的示例: ```bash #!/usr/bin/expect spawn sudo -S ...
3. **脚本编写**:使用Tcl语法编写`Expect`脚本,结合`send`命令发送输入,可以实现自动化操作。例如,自动登录到远程服务器,执行一系列命令,然后退出。 4. **变量和控制结构**:Tcl提供了丰富的变量类型和控制...