灌水唠嗑区
技术分享
文章

Python 自动化办公系列(03)Linux OS 云服务器批量安装开发组件

发表于2025-10-09 11:58:16218次浏览14个评论

# -*- coding: utf-8 -*-
__author__ = "HaoJun"
__doc__ = "Linux OS 云服务器批量安装数据库安装时依赖的组件"
'''
本程序功能是:《云服务器资源列表》中 ID 栏位填充的节点统一安装 unzip 组件,当然也可以是其他组件。
这是 GBase 8s 安装时必要的组件。整个过程是自动批量进行的,节省很多人力成本!
'''
from fabric2 import Connection
import pandas as pd
from enum import Enum

excelFile = r"D:\6_生态发展部\云服务器管理\阿里云\阿里云云服务器.xlsx" # 云服务器资源列表
excelData = pd.DataFrame(pd.read_excel(excelFile,keep_default_na=False)) # Need install module named 'xlrd'
 

# 云服务器主要栏位名称的枚举结构
class KEYS(Enum):
    COLUMN_ID = "ID" # 示例唯一标识
    COLUMN_NAME = "instName" # 示例名称
    COLUMN_PIP = "Public IP" # 公网 IP
    COLUMN_PORT = "SSH Port" # SSH 协议外部映射端口
    COLUMN_PWD = "root password" # root 账户密码
 

# 检查云服务器必要栏位是否存在
def chkExcelHead():
    excelColumns = excelData.columns.to_list() # 从 Excel 文件读出来的表头,转换成列表
    bExit = True
    for oKey in KEYS:
        if oKey.value not in excelColumns:
            print('在"{0}"中找不到表头"{1}"!'.format(excelFile,oKey.value))
            bExit = False
            break
    return bExit
 

# 安装 unzip 组件
def installUnzip(ip, port, user, password, newhostname):
    cmd = 'yum install -y unzip' # shell 命令
    conSSH = None
    try:
        conSSH = Connection(ip, user, port=port, connect_kwargs={'password': password})
        result = conSSH.run(cmd, hide=True)
        rs = result.stdout
        print("{} 命令在主机 {} 上执行:{}".format(cmd, newhostname, rs))
    except BaseException as e:
        print("{} 命令在主机 {} 上执行:{}".format(cmd, newhostname, e))
    finally:
        if conSSH is not None:
            conSSH.close()

def main():
    if not chkExcelHead():
        exit(1)
    for i in range(len(excelData)):
        id = excelData.loc[i, KEYS.COLUMN_ID.value]
        if id == '': continue # ID 栏位空的,不做操作
        ip = excelData.loc[i, KEYS.COLUMN_PIP.value] # 从 Excel 中得到内网 IP
        port = excelData.loc[i, KEYS.COLUMN_PORT.value] # 从 Excel 中得到 SSH 协议的端口
        password = excelData.loc[i, KEYS.COLUMN_PWD.value] # 从 Excel 中得到 root 账户密码
        hostname = excelData.loc[i, KEYS.COLUMN_NAME.value] # 从 Excel 中得到主机名
        installUnzip(ip, int(port), "root", password, hostname) # 开始远程安装 uzip 组件

if __name__ == "__main__":
    main()

评论

登录后才可以发表评论
佛洛伊得发表于 9个月前
高手啊
佛洛伊得发表于 9个月前
请问python从哪里开始学呢
用户头像
郝老师发表于 9个月前
@佛洛伊得:从基础语法开始,基本数据类型、基本数据结构(列表、元组、字典、集合)、控制流语句、异常捕获、函数和参数、闭包、类、函数的异步调用等,必须吃透。然后第三方组件 Numpy pandas 必须掌握。掌握完整的知识体系后,不知道怎么实现的功能,百度或AI生成小功能的实现代码,封装成自己项目需求的模块,组装成项目代码。
佛洛伊得发表于 9个月前
python多久能达到你这个水平
佛洛伊得发表于 9个月前
非常想学py
用户头像
郝老师发表于 9个月前
@佛洛伊得:可以通过企业微信和我联络。我计划组织一个 python 初级班
佛洛伊得发表于 9个月前
向大佬学习
GBase用户21182发表于 9个月前
老师辛苦了。
GBase用户21143发表于 9个月前
向大师学习
GBase用户20926发表于 9个月前
向大佬学习
崔哥发表于 8个月前
白玉堂前春解舞,东风卷得均匀。蜂围蝶阵乱纷纷。几曾随逝水,岂必委芳尘?万缕千丝终不改,任他随聚随分。韶华休笑本无根。好风凭借力,送我上青云。
用户头像
levvel发表于 6个月前
学习一下
用户头像
levvel发表于 5个月前
给你点个赞
gbase0001发表于 1个月前
谢谢分享,python系列总结,值得收藏