shell脚本模拟ssh登录

1、背景

使用mac的终端直接ssh,但是每次都要输入密码,不堪其扰,我就想到了用shell脚本写出一个替我自动输入密码的一个脚本。这个脚本应该也适用于Linux。

2、源码

ssh_login.expect

#!/usr/bin/expect

set ssh_name [lindex $argv 0]
set timeout 1
if {$ssh_name == ""} {
    puts "输入的服务器名字不能为空!"
    exit
}
set fid [open "$env(HOME)/.ssh_info.txt" r]
set flag 0 
while {[gets $fid line] >= 0} {
    set name [lindex $line 0]
    set ip [lindex $line 1]
    set port [lindex $line 2]
    set user [lindex $line 3]
    set passwd [lindex $line 4]
    if {$name == $ssh_name} {
        set flag 1
        break
    }
}
close $fid

if {$flag == 0} {
    puts "没有找到该服务器名字!"
    exit
} else {
    puts "即将连接>>>>>>>>>>>"
}

spawn ssh -p $port $user@$ip
expect {
    "yes/no" { send "yes\n"; exp_continue }
    "assword:" { send "$passwd\n" }
}
expect {
    "assword:" {
        puts "密码错误,请检查配置文件!"
        exit
    }
}
expect $user
interact

3、使用方法

需要在自己的用户目录下面创建一个文件名为  .ssh_info.txt

内容为以下的格式:

name  ip  port  user  password
test 192.168.1.1 22 root root1234

解释:第一行为列名,写不写都可以,第一个字段是服务器的名字,需要保证不能重复,第二个是服务器ip,第三个是ssh端口,第四个是用户名,第五个是ssh密码。

然后执行:

./ssh_login.expect   <name>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值