类 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. 3.1 The Interpolating Polynomial(站点)

    Cubic Interpolation:                               https://www.youtube.com/watch? v=EtzlEA9MIwI Quad ...

  2. 小贝_mysql sql语句优化过程

    sql语句优化 一.SQL优化的一般步骤 (1).通过show status命令了解各种SQL的运行频率. (2).定位运行效率较低的SQL语句-(重点select) (3).通过explain分析低 ...

  3. GPS时间

    GPS信息里面包含一个时间戳. phonegap(即cordova)的地理位置API Geolocation 提供了对设备GPS传感器的访问,返回的数据中,除了坐标,还有一个时间戳timestamp. ...

  4. SuperSocket中的Server是如何初Start的

    第一个函数 d:\sourcecode\github\supersocket\quickstart\basic\telnetserver_startbyconfig\program.cs static ...

  5. [HNOI2011]XOR与路径

    https://zybuluo.com/mdeditor#1094266 标签(空格分隔): 高斯消元 期望 题面 从 1 号节点开始,以相等的概率,随机选择与当前节点相关联的某条边,并沿这条边走到下 ...

  6. IP V4 和 IP V6 初识

    IP V4    是互联网协议的第四版 地址长度为32位,4字节,用十进制表示 格式为:A.B.C.D 最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展 IP V6    是互联网协议的I ...

  7. phpci发送邮件

    $config['protocol']='smtp'; $config['smtp_host']='smtp.163.com';//163服务器,之前用了qq服务器死活发不出去,不知道什么原因,可以自 ...

  8. 各地图API坐标系统比较

    各地图API坐标系统比较 简单记录一下各家坐标系 WGS84坐标系:即地球坐标系,国际上通用的坐标系.设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,谷歌地图采用的是WGS84地 ...

  9. python--修改默认递归层级

    import sys sys.setrecursionlimit(最大递归次数)

  10. ACM_尿裤子

    Problem Description: 小X上课的时候喝了一大壶水,午饭后他极限跑回宿舍上厕所,结果发现不知道哪个逗比舍友在宿舍门上加了一把4位密码锁,然后还留了纸条:密码是6666,小X只能一个一 ...