类 Fabric 主机管理程序开发
类 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 主机管理程序开发的更多相关文章
- python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)
类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...
- python作业类Fabric主机管理程序开发(第九周)
作业需求: 1. 运行程序列出主机组或者主机列表 2. 选择指定主机或主机组 3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载) 4. 充分使用多线程或多进程 5. 不同主机的用户名密码 ...
- python 学习分享-实战篇类 Fabric 主机管理程序开发
# 类 Fabric 主机管理程序开发: # 1. 运行程序列出主机组或者主机列表 # 2. 选择指定主机或主机组 # 3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载) # 4. 充分 ...
- python第五十二天---第九周作业 类 Fabric 主机管理程序
类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)4. 充分使用多线程或多进程5. 不同 ...
- paramiko类Fabric主机管理
环境:Linux python3.5 要求:类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/ ...
- 基于MDK的ARM-GCC开发环境建立及新唐M0的HID类设备的C++开发
一,下载安装测试arm-none-eabi-gcc编译工具链 1,查看arm-none-eabi-gcc编译工具版本 打开网页:https://sourcery.mentor.com/G ...
- 可视化设计,类Excel的快速开发平台
活字格Web应用生成器,是可视化设计,类Excel的快速开发平台,接下来给大家介绍如何体现这些特点. 一.可视化设计 网页系统的开发,包含UI设计+代码编写的工作,最终形成网页系统.这要求系统开发人员 ...
- 主机 & 虚拟机 & 开发板 三者的恩爱情仇
# 主机 & 虚拟机 & 开发板 > 三者网络连通性,使用ping命令检测 @ Bridge 模式 ## 主机 & 虚拟机 主机与虚拟机相当于一个网络里的两台主机,都有各 ...
- 老男孩Day10作业:主机管理程序
一.作业需求: 1, 运行程序列出主机组或者主机列表 2,选择指定主机或主机组 3,选择主机或主机组传送文件(上传/下载) 4,充分使用多线程或多进程 5,不同主机的用户名,密码,端口可以不同 6,可 ...
随机推荐
- iOS开发之剖析"秘密"App内容页面效果(一)
近期在玩"秘密",发现点击主界面的Cell进去后的页面效果不错,就写了个Demo来演示下. 它主要效果:下拉头部视图放大,上拉视图模糊并且到一定位置固定不动,其它Cell能够继续上 ...
- 批量将网页转换成图片或PDF文档技巧分享
工作中我们有时要将一些批量的网页转换成图片或者PDF文档格式,尽管多数浏览器具有滚动截屏或者打印输出PDF文档功能.可是假设有几十上百张网页须要处理,那也是要人命的.所以我一直想找一款可以批量处理该工 ...
- PHP数字左侧自动补零
1.输出数字为001,002... <?php $number=0; if($number<100) { $number=$number+1; $txt=sprintf("%03 ...
- Delphi中ARC内存管理的方向
随着即将发布的10.3版本,RAD Studio R&D和PM团队正在制作Delphi在内存管理方面的新方向. 几年前,当Embarcadero开始为Windows以外的平台构建新的Delph ...
- java反射中getDeclaredMethods和getMethods的区别
getDeclaredMethods() 返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共.保护.默认(包)访问和私有方法, ...
- P2120 [ZJOI2007]仓库建设 斜率优化dp
好题,这题是我理解的第一道斜率优化dp,自然要写一发题解.首先我们要写出普通的表达式,然后先用前缀和优化.然后呢?我们观察发现,x[i]是递增,而我们发现的斜率也是需要是递增的,然后就维护一个单调递增 ...
- JSP-Runoob:JSP 页面重定向
ylbtech-JSP-Runoob:JSP 页面重定向 1.返回顶部 1. JSP 页面重定向 当需要将文档移动到一个新的位置时,就需要使用JSP重定向了. 最简单的重定向方式就是使用respons ...
- github 用户不被识别问题
期末考完,继续开发. 用过的都知道,直接用的话贡献者上面显示不出自己. 查一下就知道是因为github的识别是靠邮箱设置的. 但是如果频繁创建新仓库,容易忘记设定用户名和邮箱. 突发奇想,发现 ...
- 【XSY3209】RGB Sequence
题目 传送门 解法 用\(f_{i, j, k}\)表示有\(i\)个红石块, \(j\)个绿宝石块, \(k\)个钻石块 可以转移到\(f_{p+1, j, k}\). \(f_{i, p+1,k ...
- [Swift通天遁地]四、网络和线程-(15)程序内购功能
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...