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

 更新时间:2014年04月23日 10:55:14   作者:  
mac下没有找到好用的类似secureCRT,就自己写了个自动登录的脚本,分享一下,如果是新浪的,就基本不用修改代码就直接能用

文件名: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 <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

相关文章

  • shell脚本字符串处理的使用(分割、截取和拼接)

    shell脚本字符串处理的使用(分割、截取和拼接)

    本文主要介绍了shell脚本字符串处理的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Linux中mysqldump命令实例详解

    Linux中mysqldump命令实例详解

    mysqldump是mysql数据库中备份工具,用于将MYSQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中。今天通过本文给大家介绍mysqldump命令实例详解,一起看看吧
    2016-12-12
  • Shell执行/调用Java/Jar程序例子的实例详解

    Shell执行/调用Java/Jar程序例子的实例详解

    这篇文章主要介绍了Shell执行/调用Java/Jar程序例子的实例详解的相关资料,这里提供实例帮助大家实现这样的功能,需要的朋友可以参考下
    2017-08-08
  • Bash Shell中的select命令简单使用示例

    Bash Shell中的select命令简单使用示例

    这篇文章主要介绍了Bash Shell中的select命令简单使用示例,通常用于流程控制功能的实现,需要的朋友可以参考下
    2015-07-07
  • Linux shell脚本编程if语句的使用方法(条件判断)

    Linux shell脚本编程if语句的使用方法(条件判断)

    这篇文章主要介绍了Linux shell脚本编程if语句的使用方法,大家参考使用吧
    2013-12-12
  • Shell脚本注释写法

    Shell脚本注释写法

    这篇文章主要介绍了Shell脚本注释的3种写法,包含单行注释的方法和多行注释的多种方法,需要的朋友可以参考下
    2014-07-07
  • 深入探究Linux shell的实现原理

    深入探究Linux shell的实现原理

    这篇文章主要介绍了Linux shell的实现原理,文中通过代码示例和图文介绍的非常详细,对大家探究Linux shell的实现原理有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • 详解Linux下find查找文件命令和grep查找文件命令

    详解Linux下find查找文件命令和grep查找文件命令

    在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep,两个命令是有区的,今天通过本文给大家介绍下Linux下查找文件(find、grep命令),感兴趣的朋友一起看看吧
    2022-04-04
  • Bash中分支控制Case语句的实现

    Bash中分支控制Case语句的实现

    case语句通常用于简化具有多种不同选择的复杂条件语句,使 Bash 脚本更具可读性,在本文中我们将深入探讨case语句的使用方法和一些实用的例子,感兴趣的可以了解一下
    2024-01-01
  • Linux下如何安装Run文件格式NVIDIA显卡驱动

    Linux下如何安装Run文件格式NVIDIA显卡驱动

    本篇文章给大家介绍Linux下如何安装Run文件格式NVIDIA显卡驱动,主要设计到linux下安装run文件格式nvidia显卡驱动方面的知识点,对linux下安装run文件格式nvidia显卡驱动感兴趣的朋友可以参考下本文
    2015-10-10

最新评论