华域联盟 linux shell shell脚本实现ssh自动登录功能分享

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

文件名: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 "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 <[email protected]>

##

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

您可能感兴趣的文章:

本文由 华域联盟 原创撰写:华域联盟 » shell脚本实现ssh自动登录功能分享

转载请保留出处和原文链接:https://www.cnhackhy.com/15699.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部