300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Linux ssh shell 自动登录 shell脚本实现ssh自动登录功能分享

Linux ssh shell 自动登录 shell脚本实现ssh自动登录功能分享

时间:2020-04-14 04:27:36

相关推荐

Linux ssh shell 自动登录 shell脚本实现ssh自动登录功能分享

文件名:ssh_auto_login

#!/usr/bin/expect

##

#ssh模拟登陆器

#

#@author zhiyuan

##

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 "yes\r";exp_continue}

"*password:" { send "$password\r" }

}

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

expect {

"*PASSCODE:" {

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

expect_user -re "(.*)\n"

set random_passcode $expect_out(1,string)

send "$default_passcode$random_passcode\r"

expect {

"Access Denied" { continue }

"Enter:" { send "1\r" }

}

set translate_ip [lindex $argv 4]

if { $translate_ip != "" } {

expect "*):" { send "$translate_ip\r" }

}

}

#"Last login:*" { }

}

break

}

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

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

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

send_user "login success!"

interact

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

文件名:xxx_launcher

#!/bin/sh

##

#服务器登陆器

#

#@author zhiyuan

##

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。