[Shell]Linux下SSH免输密码快速登陆

在linux下可以通过ssh 连接远端设备时需要手动输入用户名和密码,免输入用户可以直接通过ssh -l Username 方式实现,但要做免输入密码使用ssh命令无法实现,此时需要用到expect。

分别构建两个脚本,一个fssh 一个my.exp

my.exp实现ssh免输密码登陆,fssh记录用户名、密码、ip地址等信息。

分别将两个脚本放到/usr/bin目录下,并增加执行权限。

通过执行命令fssh XX 即可登陆到对应的远端设备

 

Fssh 脚本

#!/bin/sh
store1(){
User=admin
Passwd=admin
IPaddr=1.1.1.1
/usr/bin/my.exp $User $Passwd $IPaddr
}

store2(){
User=admin
Passwd=admin
IPaddr=2.2.2.2
/usr/bin/my.exp $User $Passwd $IPaddr
}

bhc(){
User=admin
Passwd=admin
IPaddr=3.3.3.3
/usr/bin/my.exp $User $Passwd $IPaddr
}

store4(){
User=store4
Passwd=admin
IPaddr=4.4.4.4
/usr/bin/my.exp $User $Passwd $IPaddr
}


asa5510(){
User=store4
Passwd=admin
IPaddr=5.5.5.5
/usr/bin/my.exp $User $Passwd $IPaddr
}


if [ $1 = "store1" ];then
store1
elif [ $1 = "store4" ];then
store4
elif [ $1 = "store2" ];then
store2
elif [ $1 = "bhc" ];then
bhc
elif [ $1 = "asa5510" ];then
asa5510
else
echo "var error"
fi
  

expect 脚本:my.exp

#!/usr/bin/expect -f

set User [lindex $argv 0]
set Passwd [lindex $argv 1]
set IPadd [lindex $argv 2]

spawn ssh $User@$IPadd
expect {
"*yes/no" { send "yes\r";exp_continue }
"*assword*" { send "$Passwd\r" }
}
interact
exit

 

posted @ 2017-01-19 14:05  id404  阅读(1368)  评论(0编辑  收藏  举报