`

Linux下用expect实现ssh自动登录并执行脚本

阅读更多

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登陆,自动上传下载文件等等。

分享到:
评论

相关推荐

    linux命令expect实现ssh登陆.docx

    Expect 可以模拟用户交互,自动输入命令和参数,实现自动化登录、文件传输、数据备份等操作。下面我们将详细介绍如何使用 Expect 实现 SSH 登陆。 Expect 的安装 ---------------- Expect 软件包可以在大多数 ...

    Linux中使用expect脚本实现远程机器自动登录

    在这篇文章中,我们将详细介绍如何在Linux中使用expect脚本来实现远程机器的自动登录。 首先,我们需要创建一个名为`ssh_expect`的expect脚本。这个脚本的主要任务是接收三个参数:远程主机名(hostname)、用户名...

    linux实现交互执行:expect

    `expect`是一个基于TCL(Tool Command Language)的脚本语言,主要用于自动化那些需要用户交互的任务,它能够模拟用户对命令行的输入,极大地提高了工作效率。 `expect`的基本工作原理是通过读取脚本中的指令,监控...

    自动登陆ssh,批量ip脚本操作

    标题提到的“自动登陆ssh,批量ip脚本操作”是指使用脚本自动化地通过SSH(Secure Shell)协议连接到多个具有不同IP地址的远程服务器。这种方法对于系统管理员来说非常实用,可以减少手动登录每个服务器的时间和工作...

    Linuxssh登录远程服务器 expect

    例如,一个简单的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模拟键盘输入实现定时登录教程.zip

    在Linux环境中,有时我们需要自动化执行一些需要交互的任务,比如定时登录到远程服务器。"expect"工具就是为此设计的,它可以模拟键盘输入,自动应答交互式程序,使得非脚本化的任务可以被脚本化处理。这个教程将...

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

    在Linux环境中,编写脚本以自动化执行任务是常见的需求,特别是在需要与系统进行交互或处理命令行工具时。`expect`工具就是为了解决这个问题而诞生的,它允许我们在脚本中模拟用户输入,尤其在需要输入密码或确认...

    Linux expect实现自动登录脚本实例代码

    在Linux环境下,使用 Expect 可以编写一个自动登录脚本,例如 `login.sh`。这个脚本的核心在于四个主要的 Expect 指令: 1. **spawn**:这个命令用来启动一个新的进程,通常会是需要交互的应用程序,如 `ssh` 命令...

    用于shell脚本无交互的ssh自动登陆(转载)

    为了解决这一问题,这篇博文介绍了如何使用expect工具实现shell脚本中的SSH无交互自动登录。 expect工具是基于Tcl语言编写的,它能够通过自动化的方式响应程序输出的提示信息。在ssh命令执行时,expect可以用来捕获...

    linux expect安装及expect,tcl安装包

    Linux Expect 是一个强大的自动化工具,它允许用户编写脚本来自动处理需要交互的程序,比如SSH登录、SCP文件传输等。Expect 基于TCL语言,因此在使用之前需要先安装TCL环境。本压缩包提供了Linux Expect的安装教程、...

    linux下expect的安装方法

    Linux下的`expect`工具是一个强大的自动化管理利器,尤其适合处理那些需要交互式输入的脚本任务,比如自动登录、密码输入、脚本自动化等。它基于Tcl语言,通过模拟用户交互来自动化复杂的命令行操作。`expect`的安装...

    Linux下使用expect命令编写自动化交互脚本

    在Linux系统中,expect命令是一种强大的工具,它允许用户编写自动化脚本来处理那些通常需要人工交互的...希望这篇内容能对你在Linux环境下使用expect编写自动化交互脚本有所帮助,并鼓励你去探索更多expect的高级功能。

    针对linux服务器交互式自动化脚本实现与研究.pdf

    在 Linux 服务器集群之间实现无密码的 SSH 登录可以降低服务器之间由 Linux 操作系统的安全设置所带来的不必要的损耗,并减少人工的干预。 Expect 是一个流行的自动化工具,能够模拟用户的交互式操作,实现自动化的...

    expect命令在linux下实现批量ssh免密

    下面是一个简单的`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自动登录.pdf

    例如,使用Expect自动登录远程服务器的脚本可能包括以下步骤: 1. 使用`spawn`命令启动一个进程,例如一个ssh会话。 2. 使用`send`命令向进程发送输入。 3. 使用`expect`命令等待特定的输出。 4. 使用`interact`...

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

    而`Expect`作为一种强大的自动化工具,可以用来模拟交互式会话,实现对远程服务器的自动登录、命令执行等功能。本文将详细介绍`Expect`的基本用法及其应用场景,并通过具体示例来帮助读者更好地理解和掌握。 #### ...

    linux编写bash shell脚本文件.sh 自动输入密码.在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码

    `expect`是一个Tcl扩展,专门用来自动化交互式程序,如SSH登录、FTP传输等。我们可以创建一个小型的`expect`脚本来自动发送密码给`sudo`。以下是一个简单的示例: ```bash #!/usr/bin/expect spawn sudo -S ...

    远程批量修改linux服务器密码的脚本归类.pdf

    我们使用 SSH 来连接远程 Linux 服务器,并执行相关的命令。 3. Linux 服务器密码的修改:我们使用 Expect 脚本来修改 Linux 服务器的密码。该脚本可以自动地输入密码,并执行相关的命令。 4. 用户和组的管理:在 ...

Global site tag (gtag.js) - Google Analytics