工作中,我们经常会定期更换服务器密码,如果手动去修改,不仅费时,而且容易出错。下面提供了一种思路,可以实现批量、自动修改服务器密码。

大致思路:首先,为每一台服务器设定一个唯一标识;其次,将每台服务器的唯一标识、新密码、修改指令等信息存入专门的密码服务器;最后,每台服务器定时去查询密码服务器中的信息,收到修改指令后,自行修改密码。

1、设定服务器唯一标识

每一台服务器都需要一个唯一标识,便于查找、定位。不要使用IP地址、MAC地址,因为一台服务器可能有多个IP,多个网卡,IP地址也可能经常换来换去,这样就不准确。这里我使用了CUPID+ 主板序列号的组合作为唯一标识。我们测试了30多台服务器,发现这个组合可以满足需要。当然,也有其他的方法,如给每台服务器设置配置文件等。下面是获取硬件信息的方法:

def get_disk_info():
encrypt_str = ""
c = wmi.WMI()
for cpu in c.Win32_Processor():
# 获取CPUID
encrypt_str = encrypt_str + cpu.ProcessorId.strip()
for board_id in c.Win32_BaseBoard():
# 主板序列号
encrypt_str = encrypt_str + board_id.SerialNumber.strip() return encrypt_str

2、设定新密码

在数据库中维护服务器唯一标识,新密码,更新状态,指令等信息。为了安全起见,新密码可以使用密文,当需要修改的时候,把密文转换成明文。建议使用非对称加密算法,并增加密码的复杂度。如果使用主流的一些算法,如MD5等,对于简单的密码还是有办法可以破解的。也可以将新密码分成几部分,使用的时候再进行拼接或者特殊处理。这些做法都是尽可能的提高密码的安全性。

3、修改密码

每台服务器定时去检测密码服务器上的指令,如果需要修改,则立即修改,并更新修改状态等。

def changepwd():
# 获取唯一标识
cupid = get_disk_info()
# 获取修改指令及新密码
prow = getpwd(cupid)
if len(prow) > 0:
pnew = prow[0].get("newpwd")
puser = getpass.getuser()
cmd = "net user "+puser+" "+pnew
# 修改密码
res = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
recode = str(res.returncode)
# 更新状态
if "0" == recode:
sql = "update autopwd set flag='0' where sid=\'%s\'" % (pnew, cupid)
setpwd(sql)
log("change password status", str(res.returncode))
else:
log("change failed", "not find cpuid")
sys.exit(0)

本案例中,修改密码命令是Windows的net命令,如果是Linux服务器,只需把对应的命令换成对应的Linux下的即可。以后运维人员,只需制定好新的密码、修改指令、修改时间,其余的均自动完成。

Python自动批量修改服务器密码的更多相关文章

  1. Python脚本批量修改服务器密码

    搭建环境 centos 7.4 使用脚本 python 批量修改connect用户的密码 生成密码为随机密码 保存为xls文档   passwd_chang #!/usr/bin/env python ...

  2. python实现批量修改服务器密码

    需求:机房.线上有多台主机,为了保障安全,需要定期修改密码.若手动修改,费时费力易出错. 程序应该满足如下需求 : 1.在现有的excel密码表格,在最后一个字段后面生成新的密码,另存为一个新的exc ...

  3. saltstack+python批量修改服务器密码

    saltstack安装:略过 python脚本修改密码: # -*- coding utf-8 -*- import socket import re import os import sys imp ...

  4. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

  5. ansible批量修改服务器密码

    看了一下网上代码大多数是ansible-playbook实现的,需要写一个脚本,或者手动传递变量进去. 以前用python tcp模块写过客户端主动上报修改密码脚本 今天写一个ansible主控客户端 ...

  6. [转] 关于linux下通过shell命令(自动)修改用户密码

    关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自 ...

  7. (转)linux passwd批量修改用户密码

    linux passwd批量修改用户密码  原文:http://blog.csdn.net/xuwuhao/article/details/46618913 对系统定期修改密码是一个很重要的安全常识, ...

  8. linux passwd批量修改用户密码

    linux passwd批量修改用户密码 对系统定期修改密码是一个很重要的安全常识,通常,我们修改用户密码都使用 passwd user 这样的命令来修改密码,但是这样会进入交互模式,即使使用脚本也不 ...

  9. python批量修改ssh密码

    由于工作需要本文主结合了excel表格,对表格中的ssh密码进行批量修改 以下是详细代码(python3): #!/usr/bin/env python#-*-coding:utf-8-*- impo ...

随机推荐

  1. SQLserver建表规则

    --执行环境:生产环境 / beta环境--备注:文件开头写上描述或者原因.项目USE database --例如 USE LZB GO CREATE TABLE Ymtable1 ( iOrderI ...

  2. 从源码分析RocketMq消息的存储原理

    rocketmq在存储消息的时候,最终是通过mmap映射成磁盘文件进行存储的,本文就消息的存储流程作一个整理.源码版本是4.9.2 主要的存储组件有如下4个: CommitLog:存储的业务层,接收& ...

  3. Redis 新特性:多线程模型解读

    Redis 官方在 2020 年 5 月正式推出 6.0 版本,提供很多振奋人心的新特性,所以备受关注. 主要特性如下: 多线程处理网络 IO: 客户端缓存: 细粒度权限控制(ACL): RESP3  ...

  4. Linux----虚拟机克隆、快照、删除、

    克隆 已经安装一台linux系统 还想要更多的,直接克隆CentOS即可 使用vm ware 的克隆操作 注意: 使用前先关闭目前已开启的虚拟机 快照 作用: 虚拟系统出现异常,需要回到原先的状态,此 ...

  5. Win10开启FTP与配置(完整无错版)

    #1.控制面板>程序>启用或关闭Windows功能>-(控制面板可在 桌面右键>个性化>主题>桌面图标设置>勾选控制面板>确定) #2.小娜搜索IIS打 ...

  6. 内置方法 __str__ __repr__

    内置方法(双下方法,魔术方法) 在不需要程序员定义,本身就存在的类中的方法就是内置方法 内置方法:  __名字__ __init__   不需要我们主动调用,而是在实例化的时候内部自动调用的,存在一种 ...

  7. Java Study two

    由于前段时间再做.NET 项目没做更新,今天简单的学习java项目的新建和入门的学习 今日目标 基础语法了解 新建第一个java项目 新建第一个项目Class ->HelloWorld 运行并输 ...

  8. Tomcat启动时shell窗口乱码解决方法

    tomcat/conf/目录下,修改logging.properties java.util.logging.ConsoleHandler.encoding = utf-8 更改为 java.util ...

  9. 阿里云删除mysql

    记录以下,学生买的轻量级服务器安装mysql之后发现没有初始密码,之后在被自己七搞八搞后彻底歇菜,就准备重新卸载安装 记录自己卸载过程首先运行rpm -qa | grep -i mysql出来的是:m ...

  10. MariaDB CAST语法

    Syntax CAST(expr AS type) Description CAST()函数采用一种类型的值,并产生另一种类型的值,类似于CONVERT函数. CAST()和CONVERT()之间的主 ...