类 Fabric 主机管理程序开发

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

代码如下:

#-*-coding:utf-8-*-

import threadingimport queue,time,os,paramiko

#服务器连接信息获取验证def auth_action():    BASE_DIR = os.path.dirname(os.path.dirname(__file__))    try:        db_handle = BASE_DIR+"/db/host.json"    except Exception as a:        print ("The user is not exist! ",a)    print (db_handle)    f = open(db_handle)    for host_info in f:        q.put(host_info)        #print (q.qsize())#获取执行命令返回信息;def get_info(hostname,port,username,password,command):    ssh = paramiko.SSHClient()    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)    ssh.connect(hostname,port,username,password)    # 执行命令;    stdin, stdout, stderr = ssh.exec_command(command)    result = stdout.read()    print("*************", hostname,"*************")    print(result.decode())    ssh.close()#上传文件操作;def put_file(hostname,port,username,password):    transport = paramiko.Transport((hostname,int(port)))    print (hostname,port)    transport.connect(username = username, password=password)

sftp = paramiko.SFTPClient.from_transport(transport)    sftp.put(‘oldboy.avi‘,‘/home/oracle/test_from_win‘)    sftp.close()#获取主机列表def get_host_info():    BASE_DIR = os.path.dirname(os.path.dirname(__file__))    try:        db_handle = BASE_DIR+"/db/host.json"    except Exception as a:        print ("The user is not exist! ",a)    #print (db_handle)    with open (db_handle) as f:        print (f.read())

if __name__ =="__main__":    q = queue.Queue()    msg ="""    1.显示主机列表;    2.主机组执行命令;    3.向主机传输文件;    """    while True:        print (msg)        msg_info = input("请选择要执行的操作:")        if msg_info =="1":            get_host_info()        if msg_info=="2":            print (">>>>>")            command = input("请输入执行命令!>>>")            auth_action()            #print (q.qsize())            tmp_list = []            for _ in range(q.qsize()):                host_list = q.get().split()                hostname, port, username, password = host_list[1], host_list[4], host_list[2], host_list[3]                t = threading.Thread(target=get_info, args=((hostname, port, username, password, command)))                tmp_list.append(t)                t.start()            for t in tmp_list:                t.join()        if msg_info =="3":            time_start = time.time()            #put_file(hostname, port, username, password)            auth_action()            tmp_list = []            for _ in range(q.qsize()):                host_list = q.get().split()                hostname, port, username, password = host_list[1], host_list[4], host_list[2], host_list[3]                t = threading.Thread(target=put_file, args=((hostname, port, username, password)))                tmp_list.append(t)                t.start()            for t in tmp_list:                t.join()            cost_time = time.time() - time_start            print ("上传文件已完成,用时:%s" % cost_time)        if msg_info =="q":            print ("退出系统!")            break
时间: 2024-10-15 08:05:49

类 Fabric 主机管理程序开发的相关文章

python第五十二天---第九周作业 类 Fabric 主机管理程序

类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)4. 充分使用多线程或多进程5. 不同主机的用户名密码.端口可以不同 README 类 Fabric 主机管理程序 执行命令(SSH) 向其传输文件(上传/下载) Fabric/#程序目录 |- - -__init__.py |- - -bin/#启动目录 | |- - -__init__.py | |- - -Fabric_start

paramiko类Fabric主机管理

环境:Linux python3.5 要求:类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)4. 充分使用多线程或多进程5. 不同主机的用户名密码.端口可以不同 结构:bin-----| start.py ......启动目录,需配置主机列表core----| main.py ......主目录conf----| config.py ......配置目录 system.ini ...

python之路——作业:类Farbic主机管理程序(仅供参考)

一.作业需求 1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)4. 充分使用多线程或多进程5. 不同主机的用户名密码.端口可以不同 二.实现功能 1.创建主机2.运行程序列出主机列表3.选择指定主机或主机组4.选择让主机或主机组执行命令或传输文件5.充分使用多线程注意:新用户使用本程序1.创建主机------->需根据自己现已开启的主机创建主机,将主机信息以文件的形式保存下来: 2.连接主机------->根据用户创

主机/虚拟机/开发板三者互通

主机:win10 虚拟机:VMware CentOS 7 开发板:jz2440 1. 让主机和虚拟机互通 1.1 设置虚拟机使用桥接模式 1.2 设置vmware工作方式为桥接模式 最好使用无线上网,因为如果使用有线,那么主机行接网线的端口就被占用,后面需要用网线连接主机和开发板 1.3 确认主机的ip ipconfig: 1.4 配置虚拟机网关 gedit /etc/sysconfig/network 添加网关,必须与主机网关一致 GATEWAY=172.22.0.1 1.5 给虚拟机配置静态

C# Screen 类(多屏幕开发)

Screen 类 下面的代码示例演示如何使用 Screen 类的各种方法和属性. 该示例调用 AllScreens 属性来检索连接到系统的所有屏幕的数组. 对于每个返回的 Screen,该示例将设备名称.边界.类型.工作区和主屏幕添加到 ListBox. 1 private void button1_Click(object sender, System.EventArgs e) 2 { 3 int index; 4 int upperBound; 5 6 // Gets an array of

即时动作类网络卡牌游戏开发真的很难

我的<凤舞三国>--即时动作策略类网络手机戏从策划到实施如今已经过了16个月了,终于到今年4月(2016年4月)有望出一个内测包给众多期望代理偶家产品的发行们.蓦然回首才发现,偶从2011年3月进入手游开发行业如今已经过去5年了- 不由发出一声感叹:"光阴如梭.人生苦短啊." 我们也像其他众多小游戏公司,在2014年确定了开发三代即时动作类网络卡牌游戏的目标,因为先找到了一个非常好的美术外包合作伙伴,所以当时我们非常有信心8个月能够定搞定该游戏.我们当时认为:就游戏产品开发

即时动作类网络卡牌游戏开发真的非常难

我的<凤舞三国>--即时动作策略类网络手机戏从策划到实施现在已经过了16个月了.最终到今年4月(2016年4月)有望出一个内測包给众多期望代理偶家产品的发行们.蓦然回首才发现,偶从2011年3月进入手游开发行业现在已经过去5年了- 不由发出一声感叹:"光阴如梭.人生苦短啊. " 我们也像其它众多小游戏公司.在2014年确定了开发三代即时动作类网络卡牌游戏的目标.由于先找到了一个很好的美术外包合作伙伴,所以当时我们很有信心8个月可以定搞定该游戏. 我们当时觉得:就游戏产品开发

iOS 8:【转】类簇在iOS开发中的应用

源地址:http://limboy.me/ios/2014/01/04/class-cluster.html 类簇(class cluster)是一种设计模式,在Foundation Framework中被广泛使用,举个简单的例子 NSArray *arr = [NSArray arrayWithObjects:@"foo",@"bar", nil]; NSLog(@"arr class:%@", [arr class]); // output:

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的