源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-06-05 11:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:shell脚本实现ssh自动登录功能分享
文件名:ssh_auto_login
[u]复制代码[/u] 代码如下:
#!/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
[u]复制代码[/u] 代码如下:
#!/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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部