Python 自动化办公系列(03)Linux OS 云服务器批量安装开发组件
# -*- 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()
评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526