python实现linux服务器批量修改密码并生成execl

对于“python实现linux服务器批量修改密码并生成excel”的攻略,我可以列出以下步骤:

1. 安装必要的Python模块

在使用Python实现linux服务器批量修改密码并生成excel的过程中,需要使用到paramiko模块和openpyxl模块,因此需要先安装这两个模块。在终端中输入以下命令进行安装:

pip install paramiko openpyxl

2. 编写Python脚本

在安装好必要的模块后,我们将会编写一个Python脚本来实现批量修改密码并将结果保存至excel表格中。以下给出一个示例代码:

import paramiko
from openpyxl import Workbook

def change_password(hostname, username, password, oldpwd, newpwd):
    # 连接服务器
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname, 22, username, password)

    # 修改密码
    stdin, stdout, stderr = ssh.exec_command(f"echo '{newpwd}\n{newpwd}'| passwd {username} --stdin")
    output = stdout.read().decode('utf-8')

    # 关闭连接
    ssh.close()

    # 返回结果
    if 'successfully' in output:
        return "密码修改成功"
    else:
        return "密码修改失败"

def main():
    # 服务器列表
    servers = [
        {"hostname": "192.168.0.1", "username": "root", "password": "123456", "oldpwd": "oldpassword", "newpwd": "newpassword1"},
        {"hostname": "192.168.0.2", "username": "root", "password": "123456", "oldpwd": "oldpassword", "newpwd": "newpassword2"},
        {"hostname": "192.168.0.3", "username": "root", "password": "123456", "oldpwd": "oldpassword", "newpwd": "newpassword3"}
    ]

    # 创建excel表格
    workbook = Workbook()
    sheet = workbook.active
    sheet.title = "修改结果"
    sheet.append(["服务器", "用户名", "旧密码", "新密码", "修改结果"])

    # 执行批量修改密码
    for server in servers:
        result = change_password(server["hostname"], server["username"], server["password"], server["oldpwd"], server["newpwd"])
        sheet.append([server["hostname"], server["username"], server["oldpwd"], server["newpwd"], result])

    # 保存excel表格
    workbook.save("password_change_result.xlsx")


if __name__ == "__main__":
    main()

在上述代码中,我们首先定义了一个change_password函数来实现密码修改功能。在该函数中,我们借助于paramiko库实现ssh连接,使用passwd命令修改密码,并返回修改结果。

同时,我们在main函数中定义了一个包含多个服务器的字典列表,并构建了一个名为“修改结果”的excel表格来记录每台服务器的修改结果。接着我们使用for循环对每台服务器进行修改密码的操作,并将结果写入excel表格中。

3. 运行Python脚本

在完成Python脚本的编写后,我们可以通过以下命令运行脚本:

python password_change.py

其中,password_change.py为我们编写的Python脚本的文件名。

运行完成后,我们将会得到一个名为“password_change_result.xlsx”的excel表格文件,该文件记录了每台服务器的密码修改结果。

以下是两个示例说明:

示例1:

假设我们要修改三台服务器的密码,分别是:

    服务器1:IP地址为192.168.0.1,用户名为root,旧密码为oldpassword,新密码为newpassword1;
    服务器2:IP地址为192.168.0.2,用户名为root,旧密码为oldpassword,新密码为newpassword2;
    服务器3:IP地址为192.168.0.3,用户名为root,旧密码为oldpassword,新密码为newpassword3。

我们可以将这些服务器信息添加到上述代码中的servers列表中,并根据需要修改旧密码和新密码。

示例2:

假设我们要将服务器的密码修改为随机生成的密码,我们可以利用string模块生成一组随机的密码,如下所示:

import random
import string

def random_password(length):
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

# 随机生成一个长度为8的密码
new_password = random_password(8)

在程序中,我们构建了一个random_password函数,该函数接收一个整数参数length,并随机生成一个由大小写字母和数字组成的长度为length的密码。我们可以在调用change_password函数时将new_password变量传递给newpwd参数,以实现批量随机生成密码的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现linux服务器批量修改密码并生成execl - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • python3.7 的新特性详解

    Python 3.7的新特性详解 Python 3.7版本于2018年6月发布,它引入了很多新的特性和更新,这些新特性涵盖各种方面,从更好的文本处理到代码性能提升。在本文中,我们将讲解Python 3.7的新特性。 1. Data Classes(数据类) Python 3.7中引入了一个新的装饰器:@dataclass。它可以用于快速创建一个类,该类只需要…

    python 2023年5月13日
    00
  • python线程优先级队列知识点总结

    Python线程优先级队列知识点总结 什么是线程优先级队列? 线程优先级队列是Python标准库中的一个模块,提供了一个可排序的、优先级队列的数据结构。 通常情况下,在多线程编程中,我们需要为线程分配不同的优先级,以确保执行时间更长、执行顺序更重要的任务被先处理。这就是优先级队列的作用。 使用线程优先级队列 在Python中,我们可以使用 queue 模块提…

    python 2023年6月3日
    00
  • python使用requests库提交multipart/form-data请求的方法详解

    以下是关于Python使用requests库提交multipart/form-data请求的方法详解的攻略: Python使用requests库提交multipart/form-data请求的方法详解 在Python中,使用requests库可以方便地提交multipart/form-data请求。multipart/form-data是一种常见的HTTP请…

    python 2023年5月14日
    00
  • Python使用multiprocessing实现一个最简单的分布式作业调度系统

    针对“Python使用multiprocessing实现一个最简单的分布式作业调度系统”,我将提供以下的攻略步骤。 1. 安装必要的Python库 首先,需要确保安装了需要使用到的Python库,包括multiprocessing、subprocess和os等库。此外,可能还需要额外安装一些第三方库来扩展新的功能。 2. 设置任务队列 为了实现任务的调度,需…

    python 2023年5月19日
    00
  • numpy.random.seed()的使用实例解析

    numpy.random.seed()的使用实例解析 numpy.random.seed()的作用 numpy.random.seed() 用于指定随机数生成器的种子,以确保在生成随机序列时得到可重复的结果。 语法格式 numpy.random.seed(seed=None) 其中,参数 seed 表示要设置的随机种子值,默认值为 None。 示例一 下面是…

    python 2023年6月3日
    00
  • Python进程间通信 multiProcessing Queue队列实现详解

    Python进程间通信 multiProcessing Queue队列实现详解 什么是进程间通信 在操作系统中,进程是由操作系统抽象出来的程序执行单元,每个进程与其他进程相互独立,都有独立的地址空间、数据、代码以及系统资源。不同进程之间互相隔离,如果需要在不同的进程之间传递数据,就需要通过进程间通信(IPC)来实现。 Python中有多种方法实现进程间通信,…

    python 2023年5月19日
    00
  • Python使用re模块正则提取字符串中括号内的内容示例

    以下是详细讲解“Python使用re模块正则提取字符串中括号内的内容示例”的完整攻略,包括正则表达式的基本语法、使用re模块匹配字符串中括号的内容的方法和两个示例说明。 正则表达式基本语法 正则表达式是一种用于匹配文本的模式。Python中,使用re模块来处理正则表达式。正则表达式的基本语法如下: 符号:匹配指定的字符。 集合:匹配指定的集。 量词:匹配指定…

    python 2023年5月14日
    00
  • Pycharm安装第三方库失败解决方案

    以下是关于“Pycharm安装第三方库失败解决方案”的完整攻略: 问题描述 在使用Pycharm安装第三方库时,可能会出现安装失败的情况。这可能是由于网络问题、权限问题其他原因导致的。下一些常见的安装失败的情况: 安装过程中出现网络错误。 安装过程中出现权限错误。 安装过程出现依赖错误。 解决方案 在出现Pycharm安装第三方库的情况时,可以尝试以下解决方…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部