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, 让天下没有难做的运维。

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

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

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

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

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

精美PPT不再是梦

  • 2013年10月22日 10:25
  • 10MB
  • 下载

手机QQ远程关机已不再是问题

  • 2010年09月26日 10:04
  • 1.23MB
  • 下载

Android适配px不再是问题

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49990941; 本文出自:【张鸿洋的博客】 一、概述相信Andro...

阿里云上线视频云剪辑 快速产出PGC短视频不再是问题!

摘要: 近日,阿里云率先推出了视频云剪辑功能。作为一款操作简单、功能齐全的PC端视频剪辑工具,针对短视频应用场景,提供丰富在线编辑与素材管理功能,可以帮助运营人员快速制作有趣、有料的视频内容。 ...
  • dicyt
  • dicyt
  • 2017年07月21日 10:44
  • 209

五种方式让你在java中读取properties文件内容不再是难题

一、背景   最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题。就借此机会把Spring+Spri...

五种方式让你在java中读取properties文件内容不再是难题

原文:http://www.cnblogs.com/hafiz/p/5876243.html 一、背景   最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供j...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:goto让服务器登录不再是烦恼
举报原因:
原因补充:

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