expect实现自动登录

2015.08.24 No Comments

使用expect实现简单自动登录,从网上看了几个脚本不错,借鉴一下

NO.1

#!/bin/sh

auto_login_ssh(){

expect -c "

set timeout -1;

spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3};

expect *assword:*;

send -- $1\r;

interact;"

}

auto_login_ssh password user@hostname

StrictHostKeyChecking=no参数让ssh默认添加新主机的公钥指纹,也就不会出现出现是否继续yes/no的提示了。

NO.2

#!/usr/bin/expect

# 解释器声明

set timeout 30

# 设置超时时间,单位秒

spawn ssh test@192.168.1.1

# spawn 是expect的内部命令,个人理解其作用就是宣告进入人机模拟开始

expect "password:"

# expect也是内部命令,作用是监视终端输出是否包含后面的内容,有则执行下面的send,没有就等待上面设置的timeout时间

send "123456\r"

# 这个就是执行交互动作了,模拟人手动输入的东东,切记最后要带上回车符“\r”

interact

# 模拟结束,把控制权交还控制台,如果不加这个,就等于直接退出了

 

NO.3

#!/usr/bin/expect

set timeout 30

spawn mysql -uroot -p

expect "Enter password:"

send "123456\r"

interact

 

Related Posts:

发表评论