zoukankan      html  css  js  c++  java
  • module04-2-简单主机批量管理工具

    需求


    1. 运行程序列出主机组或者主机列表
    2. 选择指定主机或主机组
    3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)
    4. 充分使用多线程或多进程
    5. 不同主机的用户名密码、端口可以不同

    目录结构


    简单主机批量管理工具
    ├ bin # 执行文件目录
    | └ SBHM.py # 执行程序
    ├ conf # 配置文件目录
    | ├ hosts.ini # 配置文件。目前主要保存主机连接相关信息
    | └ init_conf.py # 配置文件格式化程序
    └ core # 程序核心代码位置
    └ main.py # 主逻辑交互程序


    代码

    
    
    import os,sys
    
    basepath = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.insert(0,basepath)
    
    from core import main
    main.main()
    SBHM.py
    
    
    import configparser
    
    c = configparser.ConfigParser()
    
    c['proxy']={
        'proxy1' : {
            'ip':'192.168.1.76',
            'port':22,
            'username':'root',
            'password':'123456'
        },
        'proxy2' : {
            'ip': '192.168.1.12',
            'port': 51123,
            'username': 'root',
            'password': '123456'
        },
        'proxy3': {
            'ip': '192.168.1.34',
            'port': 22,
            'username': 'root',
            'password': '123456'
        }
    }
    
    c['upstream'] = {
        'img': {
            'ip': '192.168.1.76',
            'port': 22,
            'username': 'root',
            'password': '123456'
        },
        'video': {
            'ip': '192.168.1.12',
            'port': 51123,
            'username': 'root',
            'password': '123456'
        },
        'static': {
            'ip': '192.168.1.34',
            'port': 22,
            'username': 'root',
            'password': '123456'
        }
    }
    
    with open('hosts.ini','w',encoding='utf-8') as f:
        c.write(f)
    init_conf.py
    import configparser
    
    c = configparser.ConfigParser()
    
    c['proxy']={
        'proxy1' : {
            'ip':'192.168.1.76',
            'port':22,
            'username':'root',
            'password':'123456'
        },
        'proxy2' : {
            'ip': '192.168.1.12',
            'port': 51123,
            'username': 'root',
            'password': '123456'
        },
        'proxy3': {
            'ip': '192.168.1.34',
            'port': 22,
            'username': 'root',
            'password': '123456'
        }
    }
    
    c['upstream'] = {
        'img': {
            'ip': '192.168.1.76',
            'port': 22,
            'username': 'root',
            'password': '123456'
        },
        'video': {
            'ip': '192.168.1.12',
            'port': 51123,
            'username': 'root',
            'password': '123456'
        },
        'static': {
            'ip': '192.168.1.34',
            'port': 22,
            'username': 'root',
            'password': '123456'
        }
    }
    
    with open('hosts.ini','w',encoding='utf-8') as f:
        c.write(f)
    main.py


  • 相关阅读:
    【转】WPF DataGridComboBoxColumn使用
    【转】CAD 二次开发--属性块 Block和BlockReference
    【转】【Revit】Revit二次开发——读取cad中的文字信息
    【转】【Centos】Linux(Centos7)下搭建SVN服务器
    现代php编程
    drone实践记录
    PHP拆分YAPI导出的swagjson文件
    pydantic验证器Validator
    利用notion打造读书追逐系统
    opencv马赛克python实现
  • 原文地址:https://www.cnblogs.com/jailly/p/7218077.html
Copyright © 2011-2022 走看看