批量修改Linux密码脚本(Python)

搭建环境

centos 7.4

使用脚本

python
批量修改connect用户的密码
生成密码为随机密码 保存为xls文档
 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
############################################
#通过脚本批量修改Linux主机密码并保存到xls中
#cnsre.cn 2018-5-18 V1
#
#修改者:xxx
#修改时间:2018-xx-xx 
#修改内容:修改内容描述
############################################

import random
import string,os
import pexpect
import xlrd,xlwt
from xlwt import Style
from xlutils.copy import copy
 
def passwd_creat():
    salt = ''.join(random.sample(string.ascii_letters + string.digits, 8))
    return salt
 
def passwd_change(userip, oldpasswd, newpasswd):
    child = pexpect.spawn('ssh connect@'+userip)                 ###connect 用户可改root
    fout = file('/home/shell/passwd/newpasslog.txt','a')            ##定义日志文件,
    child.logfile = fout
    index = child.expect(['password:','continue connecting (yes/no)?'])
    if index == 0:
        child.sendline(oldpasswd)
    elif index == 1:
        child.sendline('yes')
        child.expect('password:')
        child.sendline(oldpasswd)
    child.expect('$')
    child.sendline('sudo -i')
    child.expect('#')
    child.sendline('echo '+newpasswd+' | passwd --stdin connect')   ### connect 用户可改root
    child.expect('#')
    child.sendline('exit')
 
def open_excel(passwdfile):
    data = xlrd.open_workbook(passwdfile)
    return data
 
def get_coldata(passwdfile,sheet_name,num):
    data = open_excel(passwdfile)
    table = data.sheet_by_name(sheet_name)
    coldata = table.row_values(num)
    return coldata
 
def get_rownum(passwdfile,sheet_name):
    data = open_excel(passwdfile)
    table = data.sheet_by_name(sheet_name)
    rowsNum = table.nrows  #获取总行数
    colsNum = table.ncols   #获取总列数
    return rowsNum,colsNum
 
def add_newpwd(row, col, str):
    rb = xlrd.open_workbook(passwdfile, formatting_info=True)
    wb = copy(rb)
    ws = wb.get_sheet(0)
    ws.write(row, col, str)
    wb.save(passwdfile)
 
 
if __name__ == "__main__":
    passwdfile = "/home/shell/passwd/newpasswd.xls"     #文档读取输出路径
    sheet_name = "Sheet1"
    rowsNum, colsNum = get_rownum(passwdfile,sheet_name)
    add_newpwd(0,colsNum,'newpasswd')
    for i in range(1,rowsNum):
        newpasswd = passwd_creat()
        coldata = get_coldata(passwdfile,sheet_name,i)
        passwd_change(coldata[0], coldata[1], newpasswd)
        add_newpwd(i,colsNum,newpasswd)

 

 
 

上传脚本,以及脚本需要的模块

1.1 创建转到脚本,模块包存放地址。
1.2安装上传工具。
1.3上传模块包脚本。
rz上传
sz下载

安装所需要的模块

2.1 解压gz包。
2.2 cd到解压文件目录下
2.3 执行脚本安装模块
目录下的所有gz包都要安装过程略过

执行脚本测试实验

3.1创建一个connect用户并设置密码。并登陆测试。
 
3.2创建文档(文档名需要和脚本里的名称一样)
3.3上传文档到定义的路径下
 
3.4执行脚本测试
3.5
sz下载表格查看密码
 
3.6 使用新密码登陆测试
 
 
 
posted @ 2020-06-08 13:46  SRE运维博客  阅读(1570)  评论(0编辑  收藏  举报