亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python實現批量修改服務器密碼的方法

系統 2000 0

求:機房、線上有多臺主機,為了保障安全,需要定期修改密碼。若手動修改,費時費力易出錯。

程序應該滿足如下需求 :

1、在現有的excel密碼表格,在最后一個字段后面生成新的密碼,另存為一個新的excel密碼文件

2、根據新的excel密碼文件,更新服務器密碼,將更新后的結果保存到另外一個excel文件。

a、原始excel文件字段格式,最后一個字段為原始密碼

IP USER PORT pwd

b、生成新的密碼文件字段格式,最后一個字段為更新密碼

IP USER PORT pwd pwd20180929

c、生成新的密碼文件字段格式,最后一個字段為更新是否成功的標識

IP PORT USERNAME OLDPASS NEWPASS FLAG

按照面向對象編程的思想,可以設計2個類,excelhandler和ChangePassword

excelhandler主要負責excel文件的讀取,寫入,增加一個生成密碼文件

ChangePassword主要利用paramiko登陸服務器進行密碼更新

excelhandler類

            
#_*_ coding: utf-8 _*_
'''
@author liaogs
'''
import json
import xlrd
import xlwt
import time
import datetime
import base64
import random
from xlutils.copy import copy
class excelhandler():
  def __init__(self,path):
    self.path = path
    self.workbook = None
    self.rows = 0
    self.cols = 0
    self.serverlist = []
  def read_excel(self):
    self.workbook = xlrd.open_workbook(self.path)
    sh1 = self.workbook.sheet_by_index(0)
    self.rows = sh1.nrows
    self.cols = sh1.ncols
    for row in range(1,sh1.nrows):
      server = []
      for col in [0,1,2,sh1.ncols-2,sh1.ncols-1]:
        server.append(sh1.cell(row,col).value)
      self.serverlist.append(server)
  def gen_new_password_excel(self):
    old_excel = xlrd.open_workbook(self.path)
    new_excel = copy(old_excel)
    ws = new_excel.get_sheet(0)
    coldt = "pass"+ str(datetime.date.today())
    ws.write(0,self.cols,coldt)
    for row in range(1,self.rows):
      ws.write(row,self.cols,self.gen_key())
    dt = time.strftime("%Y%m%d%H%M%S",time.localtime())
    new_excel.save(dt+self.path)
  def write_excel(self,serverlist):
    wb = xlwt.Workbook()
    ws = wb.add_sheet(u'sheet1',cell_overwrite_ok=True)
    header = ["IP","PORT","USERNAME","OLDPASS","NEWPASS","FLAG"]
    for col in range(0,6):
      ws.write(0,col,header[col])
    for row in range(len(serverlist)):
      for col in range(0,6):
        ws.write(row+1,col,serverlist[row][col])
    dt = time.strftime("%Y%m%d%H%M%S", time.localtime())
    wb.save(dt+".xlsx")
  def get_server_list(self):
    return self.serverlist
  def get_rows(self):
    return self.rows
  def get_cols(self):
    return self.cols
  def gen_key(self):
    pool = "1234567890abcdefghijklmnopqrstuvwxyzQWERTYUIOPASDFGHJKLZXCVBNM"
    length = len(pool)
    key = ""
    for i in range(28):
      c = random.randint(0,length)
      key += pool[c:c+1]
    return key
          

ChangePassword類

            
#_*_ coding: utf-8 _*_
'''
@author liaogs
'''
import paramiko
import sys
class ChangePassword():
  def __init__(self,hostip,port,username,oldpass,newpass):
    self.hostip = hostip
    self.port = port
    self.username = username
    self.oldpass = oldpass
    self.newpass = newpass
    self.updateflag = False
  def run_change(self):
    s = paramiko.SSHClient()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    tasklist = []
    try:
      s.connect(hostname=self.hostip, port=self.port, username=self.username, password=self.oldpass)
      print ('"%s" is updating password' % self.hostip)
      stdin, stdout, stderr = s.exec_command('echo %s |passwd --stdin root' % self.newpass)
      r_message = stdout.read()
      if "successfully" in r_message:
        self.updateflag = True
        print('%s is successful' %self.hostip)
      else:
        print('%s is failed' %self.hostip)
        self.updateflag = False
      s.close()
    except Exception:
      self.updateflag = False
      print("connection error")
    tasklist = [self.hostip, self.port, self.username, self.oldpass, self.newpass, self.updateflag]
    return tasklist
          

main

            
#_*_ coding: utf-8 _*_
'''
@author liaogs
'''
import re
import sys
from excelhandler import excelhandler
from changepassword import ChangePassword
if __name__ == '__main__':
  if len(sys.argv) == 1:
    eh = excelhandler("pass.xlsx")
  else:
    eh = excelhandler(sys.argv[1])
  eh.read_excel()
  def updatepassword():
    ret = eh.get_server_list()
    tasklist = []
    for i in range(len(ret)):
      print(ret[i][0],ret[i][2],ret[i][1],ret[i][3],ret[i][4])
      cp = ChangePassword(hostip=ret[i][0],port=int(ret[i][2]),username=ret[i][1],oldpass=ret[i][3],newpass=ret[i][4])
      task = cp.run_change()
      tasklist.append(task)
    print(tasklist)
    eh.write_excel(tasklist)
  while True:
    inp = input("1、生成密碼 2、更新密碼>>")
    if str(inp) == "1":
      eh.gen_new_password_excel()
    elif str(inp) == "2":
      updatepassword()
    elif inp == "exit":
      exit()
    else:
      continue
          

代碼下載:https://github.com/liaogs/changepassword.git

總結

以上所述是小編給大家介紹的python實現批量修改服務器密碼的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天干天天插天天操 | 爱爱夜夜爽成人夜夜爽 | 国产精品国产高清国产专区 | 国产高清视频在线 | 国产一区二区三区成人久久片 | 日本一区二区三区高清在线观看 | 精品久久久久久久久中文字幕 | www久久久久 | 日日碰夜夜 | 日本免费不卡一区 | 天天色网站 | 四虎影视永久 | 青青热在线观看视频精品 | 亚洲国产欧美久久香综合 | 四虎影视网 | 精品国产91乱码一区二区三区 | 成人免费网站视频www | 全亚洲最大的免费私人影剧院 | 日本免费一二三区 | 欧美另类jizzhd | 一级片在线观看视频 | 亚洲综合第一欧美日韩中文 | 久久亚洲精品永久网站 | 久热只有精品 | 狠狠色综合久久婷婷色天使 | 久久精品二区 | 久久久久久91 | 亚洲va欧美va国产va天堂影 | 自拍理论片 | 午夜激情网站 | 久久久久在线视频 | 久久精品国产亚洲高清 | 大尺度福利视频在线观看网址 | 国产伦精品一区二区三区在线观看 | 免费不卡中文字幕在线 | 四虎视频国产精品免费 | 一七六九1769视频免费观看 | 亚洲国产美女视频 | 欧美一级毛片免费大全 | 久久久久国产免费 | 99热久久国产综合精品久久国产 |