Shell使用expect实现自动输入密码

Linux系统中都默认安装了expect,这里不再讲解。

首先,举例一种场景:登陆一台服务器,每次登陆都需要输入帐号 & 密码,不胜其烦。这个时候我们就希望能够通过脚本实现每次的自动登陆。下面我们就介绍如何使用shell脚本实现自动登陆。

以登陆跳板机为例,shell脚本如下(Login.sh):

#! /usr/bin/expect

set timeout 100

set password "NI2gaYb5mNnC5EN0"

spawn ssh -i ligang.pem [email protected]

expect "'ligang.pem':"

send "$passphrase\n"

interact

以上的shell脚本实现了本地运行Login.sh脚本,自动登陆211.15.197.133跳板机的功能。

脚本解释如下:

#!/usr/bin/expect表示使用expect的shell交互模式

set是对变量赋值

set timeout 100:设置超时时间为100秒,如果要执行的shell命令很长可以设置超时时间长一些。expect超过超时时间没有监测到要找的字符串,则不执行,默认timeout为10秒

spawn在expect下执行shell脚本

expect对通过spawn执行的shell脚本的返回进行判断,是否包含“”中的字段

send:如果expect监测到了包含的字符串,将输入send中的内容,\n相当于回车

interact:留在开的子进程内,可以继续输入,否则将退出子进程回到shell中(比如ssh登录到某台服务器上,只有加了interact才可以留在登录后的机器上进行操作)

至此,我们就了解了shell如何使用expect实现自动输入密码的用法。其他的类似情况我们都可以变通使用。

你可能感兴趣的:(Shell使用expect实现自动输入密码)