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


  • 相关阅读:
    [LeetCode] Maximum Depth of Binary Tree
    [LeetCode] Binary Tree Level Order Traversal II
    阿里第一天——maven学习
    微博用户行为分析
    对节目微博进行强过滤之后的处理
    关于推荐和机器学习的几个网站
    大论文微博个性化
    新浪微博用户分析
    位运算符规律小结
    字符串类常见面试大题
  • 原文地址:https://www.cnblogs.com/jailly/p/7218077.html
Copyright © 2011-2022 走看看