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

代码如下:

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

import threading
import 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

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

  1. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

  2. python作业类Fabric主机管理程序开发(第九周)

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

  3. python 学习分享-实战篇类 Fabric 主机管理程序开发

    # 类 Fabric 主机管理程序开发: # 1. 运行程序列出主机组或者主机列表 # 2. 选择指定主机或主机组 # 3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载) # 4. 充分 ...

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

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

  5. paramiko类Fabric主机管理

    环境:Linux python3.5 要求:类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/ ...

  6. 基于MDK的ARM-GCC开发环境建立及新唐M0的HID类设备的C++开发

    一,下载安装测试arm-none-eabi-gcc编译工具链 1,查看arm-none-eabi-gcc编译工具版本        打开网页:https://sourcery.mentor.com/G ...

  7. 可视化设计,类Excel的快速开发平台

    活字格Web应用生成器,是可视化设计,类Excel的快速开发平台,接下来给大家介绍如何体现这些特点. 一.可视化设计 网页系统的开发,包含UI设计+代码编写的工作,最终形成网页系统.这要求系统开发人员 ...

  8. 主机 & 虚拟机 & 开发板 三者的恩爱情仇

    # 主机 & 虚拟机 & 开发板 > 三者网络连通性,使用ping命令检测 @ Bridge 模式 ## 主机 & 虚拟机 主机与虚拟机相当于一个网络里的两台主机,都有各 ...

  9. 老男孩Day10作业:主机管理程序

    一.作业需求: 1, 运行程序列出主机组或者主机列表 2,选择指定主机或主机组 3,选择主机或主机组传送文件(上传/下载) 4,充分使用多线程或多进程 5,不同主机的用户名,密码,端口可以不同 6,可 ...

随机推荐

  1. 【翻译自mos文章】OGG replicat 进程使用的 TCP port

    OGG replicat 进程使用的 TCP port 来源于: TCP PORT USED BY REPLICAT PROCESSES (文档 ID 1060954.1) 适用于: Oracle G ...

  2. iOS开发——代码生成TabBar与视图切换具体解释

    我在之前多篇博客中解说了在不使用storyboard而使用nib文件的情况下.使用代码生成导航栏并进行跳转,具体能够參考<iOS开发--界面跳转与返回及视图类型具体解释><iOS纯代 ...

  3. Solr基础教程之solrconfig.xml(三)

    前面介绍过schema.xml的一些配置信息,本章介绍solrconfig.xml的配置,以及怎样安装smartcn分词器和IK分词器,并介绍主要的查询语法. 1. solr配置solrconfig. ...

  4. Meter Bus解析4:升压斩波电路

             Meter Bus解析1(http://blog.csdn.net/qingwufeiyang12346/article/details/47767595),对Meter Bus进行 ...

  5. Baum–Welch algorithm

    Baum–Welch algorithm 世界上只有一个巴菲特,也只有一家文艺复兴科技公司_搜狐财经_搜狐网 http://www.sohu.com/a/157018893_649112

  6. Linux音频驱动-ALSA概述

    概述 ALSA(Advanced Linux Sound Architecture)是linux上主流的音频结构,在没有出现ALSA架构之前,一直使用的是OSS(Open Sound System)音 ...

  7. .net连接MySQL数据库的方案与实例演示

    以下的文章主要是向大家描述的是.net连接MySQL数据库的实际操作方法与其实例的演示.net连接MySQL数据库的实际操作方案我们主要是将其分成三部分,以下的文章就有其详细内容的描述. http:/ ...

  8. 交换排序(2)——冒泡排序(bubble sort)

    冒泡排序算法的运作如下:(从后往前) 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所 ...

  9. 2-sat总结

    算法 构造一个有向图G,每个变量xi拆成两个点2i和2i+1 分别表示xi为假,xi为真 那么对于“xi为真或xj为假”这样的条件 我们就需要连接两条边 2*i —>2*j(表示如果i为假,那么 ...

  10. 01_ndk目录介绍

    精力都放在安卓上.所以说呢C这个东西不要纠结太多,对大家的要求就是能看懂,会调用. Java的特点是一处编译到处运行,跨平台.优势是比native语言强,一处编译到处运行.native语言的劣势是不能 ...