goto让服务器登录不再是烦恼

原创 2016年08月28日 19:38:47

场景

当我们维护一些服务器的时候,经常会面临密码呀端口账号呀啥的问题,使得维护时麻烦不小,再加上有时候网络不稳定,SA的脾气就更大了。

解决方案

简单的几个脚本

goto > 用户交互入口

denglu > 采用goto传过来的参数,使用expect命令进行模拟登陆

list > 服务器密码资源列表

goto

#!/usr/bin/env python
#coding: utf8

import os,sys,re
import subprocess
import datetime

host = sys.argv[1]

if host == "list":
    print "进入"
    for line in open("./list"):
        result = re.findall("(\S+)",line)
    #print len(result)
        if len(result) >=5:
        print "%s %s"%(result[0],result[5])
    sys.exit()

matchedline = []
for line in open("/Users/jacky/bin/list"):
    result = re.findall(host,line)
    if len(result) == 1:
        matchedline.append(line)

if len(matchedline) == 1:
    secretline=matchedline[0]
    print "Found the machted line."
    value = re.findall("\S+",secretline)
    if len(value) >= 5:
        print "... Mached Line Found!!!"
    #    print value
    else:
        print "Please check your config file list."
        exit(1)
    #print value
    host = value[0]
    passwd = value[1]
    port = value[2]
    user = value[3]
    prompt = value[4]
    if len(value) >= 6:
        description = value[5]
    #print host
    #print passwd
    #print port
    #print user
    print "Welcome Login --> %s"%(description)
    #os.system("/Users/jacky/bin/denglu2 %s \'%s\' %s %s \"%s\""%(host, passwd,port,user,prompt))
    os.system("/Users/jacky/bin/denglu2 %s \'%s\' %s %s \"%s\""%(host, passwd,port,user,prompt))
else:
    print "No Not Find Matched. Exit............."

denglu2

#!/usr/bin/expect -f 

log_file /tmp/1.txt

# This is very important.
set HOST [lindex $argv 0]
set serverpassword [lindex $argv 1]
set port [lindex $argv 2]
set user [lindex $argv 3]
set prompt [lindex $argv 4]
set timeout 2

#send_user "$serverpassword"
#exit

# connect via ssh
spawn ssh -o StrictHostKeyChecking=no $user@$HOST -p $port

#######################
expect {
    -re "yes/no.*" {
        exp_send "yes\r"
        exp_continue
    }
}

expect {
    -re "password:.*" {
        exp_send "$serverpassword"
        exp_send "\r"
    }
    -re "$prompt.*" {
        interact
    exit
    }
    -re "password:.*" {
        exp_send "$serverpassword"
        exp_send "\r"
    }
}

expect {
    -re "$prompt.*" {
    interact
    exit
    }
}

list

格式如下

IP地址    密码  端口  账户  (>或者$或#提示符) 描述

使用

goto 唯一定位到条目(地址呀 描述呀 账号呀啥的)
版权声明:更多精彩请关注 http://book.opschina.org, 或者加入QQ新群648503385, 让天下没有难做的运维。

相关文章推荐

如何用自己电脑架设服务器!自助建站将不再是梦想

现在很多的单位和个人都购买了电脑而且安装了宽带,喜欢上网的朋友看到别人制作的漂亮网页,也想拥有一个漂亮的网站把自己电脑上的好东西给大家一起共享,或者与相识相知的人交流,但是又不清楚如何设置,才能让别人...

如何用自己电脑架设服务器!自助建站将不再是梦想

现在很多的单位和个人都购买了电脑而且安装了宽带,喜欢上网的朋友看到别人制作的漂亮网页,也想拥有一个漂亮的网站把自己电脑上的好东西给大家一起共享,或者与相识相知的人交流,但是又不清楚如何设置,才能让别人...

精美PPT不再是梦

  • 2013-10-22 10:25
  • 10.00MB
  • 下载

VMware不再是x86虚拟化市场霸主

在财富100强中每个成员都是VMware的客户,甚至包括竞争对手Microsoft。但是根据Gartner最新的Magic Quadrant系列报告表明VMware不再是x86虚拟化市场上唯一的领头供...

当你优秀了,女神或许就不再是女神了

又是一年虐狗时,其实,对于单身的人来说,每个2.14,七夕,双十一,白色情人节,黑色情人节……甚至每一天,只要看到食堂喂饭、牵手散步、灯下依偎,都是虐狗。 那天朋友开玩笑跟我说,不能叫虐狗,毕竟,狗...

无线破解不再是梦spoonwpa

  • 2011-05-30 20:37
  • 3.51MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)