shell脚本实现ssh自动登录功能分享
shell脚本实现ssh自动登录功能分享
发布时间:2016-12-28 来源:查字典编辑
摘要:文件名:ssh_auto_login复制代码代码如下:#!/usr/bin/expect###ssh模拟登陆器##@authorzhiyua...

文件名:ssh_auto_login

复制代码 代码如下:

#!/usr/bin/expect

##

#ssh模拟登陆器

#

#@author zhiyuan <hzyhouzhiyuan艾特gmail.com>

##

if {$argc<4} {

puts "Error params: $argv"

puts "Expect params :user passwd ip port [translate_id]"

exit 1

}

set default_passcode "这里填通道机的默认密码"

set user [lindex $argv 0]

set password [lindex $argv 1]

set ip [lindex $argv 2]

set port [lindex $argv 3]

set timeout 10

while 1 {

spawn ssh -p $port $user@$ip

#如果最后的字符匹配则执行命令r结尾表示确定

expect {

"*yes/no" { send "yesr";exp_continue}

"*password:" { send "$passwordr" }

}

#这里是需要通过通道机登陆时的匹配流程,根据需要自行修改。

expect {

"*PASSCODE:" {

send_user "请输入通道机动态密码:";

expect_user -re "(.*)n"

set random_passcode $expect_out(1,string)

send "$default_passcode$random_passcoder"

expect {

"Access Denied" { continue }

"Enter:" { send "1r" }

}

set translate_ip [lindex $argv 4]

if { $translate_ip != "" } {

expect "*):" { send "$translate_ipr" }

}

}

#"Last login:*" { }

}

break

}

#无法匹配$,还不知道怎么解决

#expect -re "*$" { puts "test123"; send "source /etc/profiler" }

#expect "*$" { send "cd ~r" }

send_user "login success!"

interact

上边是ssh的自动登录,可以配合下边的shell使用,很方便。

文件名:xxx_launcher

复制代码 代码如下:

#!/bin/sh

##

#服务器登陆器

#

#@author zhiyuan <hzyhouzhiyuan@gmail.com>

##

channel_user="user_namexxx"

channel_passwd="xxxx"

#内网通道机

internal_ip1=xxx.xxx.xxx.xxx

#联通

unicom_ip1=xxx.xxx.xxx.xxx

#电信

telecom_ip1=xxx.xxx.xxx.xxx

case "$1" in

ci)

expect ssh_auto_login $channel_user $channel_passwd $internal_ip3 22

cl)

expect ssh_auto_login $channel_user $channel_passwd $unicom_ip1 22

cd)

expect ssh_auto_login $channel_user $channel_passwd $telecom_ip1 22

149)

expect ssh_auto_login channel_user channel_passwd xxx.xx.xxx.xxx 22

49)

expect ssh_auto_login $channel_user $channel_passwd $unicom_ip1 22 需要通道机跳转的ipxxx.xxx.xx

*)

echo "帮助信息:"

echo "tthere is not a server named [$1]"

echo "t服务器149:t149"

echo "t服务器49:t49"

esac

此时登陆某个服务器的时候就直接 用上述shell带要登录的服务器参数即可,如: ./xxx_launcher 49

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新linuxshell学习
热门linuxshell学习
脚本专栏子分类