我的第一个Python随笔
自学Python也很长时间了,注册博客园写了第一篇随笔。之前想过很多次,但是始终不知道该怎么开始,内容如何,现在想想,随笔嘛,是自己的想法,也自己的实践,又是自己的锻炼。话不多说,开始今天的正式内容。
Python的paramiko模块。
paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, BSD, MacOS X, Windows等,paramiko都可以支持,因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系列的操作时,paramiko是最佳工具之一。
SSHClient
用于连接远程服务器并执行基本命令
基于用户名密码连接:
import paramiko# 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='192.168.30.129', port=22, username='sunqi', password='43797189')# 执行命令 stdin, stdout, stderr = ssh.exec_command('df') # 获取命令结果 result = stdout.read()# 关闭连接 ssh.close()
示例代码:
1 import paramiko 2 3 ssh = paramiko.SSHClient() 4 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) 5 ssh.connect(hostname='192.168.30.129',port=22,username='root',password='43797189')#测试机器为Linux虚拟机(CentOS 7) 6 while True: 7 cmd = input('>>:') 8 stdin,stdout,stderr = ssh.exec_command(cmd) 9 result = stdout.read() 10 if stdout: 11 print(str(result,'utf8')) 12 else: 13 print(str(stderr.read(),'utf8')) 14 15 ssh.close()
SFTPClient
用于连接远程服务器并执行上传:
import paramiko''' 从windows上传文件到Linux虚拟机 IP地址: 192.168.30.129 端口:22 ''' host = '192.168.30.129' port = 22t = paramiko.Transport((host,port)) t.connect(username="root",password='43797189',) sftp = paramiko.SFTPClient.from_transport(t) target_path = '/var/log/windows.log' local_path = 'E:\\sunqi.log' sftp.put(local_path,target_path) t.close()
最后将多线程和这个paramiko模块综合起来写了一个批量主机管理程序
请看到的朋友原谅我的混乱代码规范,我会加倍努力的!
批量主机管理系统远程连接主机实现命令的执行文件的上传下载:
主机列表:
示例代码:host_dir.py
host_dic = {'group1':{'C1':{'host':'192.168.30.129','port':22,'username':'root','password':'43797189'},'C2':{'host':'192.168.30.130','port':22,'username':'root','password':'43797189'},'C3':{'host':'192.168.30.131','port':22,'username':'root','password':'43797189'}},'group2':{'C4':{'host':'192.168.30.132','port':22,'username':'root','password':'43797189'},'C5':{'host':'192.168.30.134','port':22,'username':'root','password':'43797189'},'C6':{'host':'192.168.30.135','port':22,'username':'root','password':'43797189'},} }
运行代码:run_code.py
import threading import paramiko import os from paramiko模块.批量主机管理小项目.host_dir import host_dic''' 主机批量管理程序 实现多个主机的同时管理 利用多线程以及paramiko模块 实现多个主机同时执行命令,上传或下载文件 ''' class host_manage():def __init__(self,host,port,username,password):self.host = hostself.port = portself.username = usernameself.password = passworddef command(self,cmd):ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)ssh.connect(hostname=self.host,port=self.port,username=self.username,password=self.password)#cmd = input(">>:")stdin, stdout, stderr = ssh.exec_command(cmd)result = stdout.read()if stdout:print(str(result, 'utf8'))else:print(str(stderr.read(), 'utf8'))def upload(self):t = paramiko.Transport(self.host,self.port)t.connect(username=self.username,password=self.password)sftp = paramiko.SFTPClient.from_transport(t)target_path = '/var/log/windows.log'local_path = 'E:\\sunqi.log'sftp.put(local_path,target_path)t.close()passdef download(self):pass def choose_group():print('可管理主机分组')for k in host_dic:print(k)for i in host_dic[k]:print(host_dic[k][i])group_num = input('>>:选择主机编号')return group_num def run():num = choose_group()print('已选组号:%s' %num)selected = input(">>:输入即将进行的操作:command、upload、download")if selected =="command":cmd = input('>>:请输入要批量操作的命令:')thread_conut = []for i in host_dic[num]:func = host_manage(host=host_dic[num][i]['host'],port=host_dic[num][i]['port'],username=host_dic[num][i]['username'],password=host_dic[num][i]['password'])if hasattr(func,selected):p = threading.Thread(target=getattr(func,selected),args=(cmd,))thread_conut.append(p)p.start()for i in thread_conut:i.join()if __name__ == '__main__':run()
转载于:https://www.cnblogs.com/SunQi-Tony/p/8494908.html
我的第一个Python随笔相关推荐
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目 ...
- python随笔01(robotframework自动化)
一.dos窗口输入pip提示did not provide a command 解决网址:https://blog.csdn.net/songlh1234/article/details/828823 ...
- Python 随笔:用 PIL 库读取图像文件像素长宽大小
Python 随笔:用 PIL 库读取图像文件像素宽高大小 1.前言 安装 PIL 库(全称是pillow),所以安装命令上的名称是pillow pip install pillow 2. 使用pil ...
- Python随笔:设置Windows的pip镜像配置文件 pip.ini
Python随笔:设置Windows的pip镜像配置文件 pip.ini 1. 前言 首先来看看有什么 pip 镜像地址 清华 https://pypi.tuna.tsinghua.edu.cn/si ...
- Python 随笔:与and、或or、非not逻辑运算
Python 随笔:与and.或or.非not逻辑运算巧用 1. 基础知识 python中的逻辑运算符: and (与) or (或) not (非) 优先级为是not > and > o ...
- Python随笔:对 txt 文件进行读写,清除,删除操作
Python随笔:对 txt 文件进行读写,清除内容,删除操作 文章目录 Python随笔:对 txt 文件进行读写,清除内容,删除操作 1.文件读写 1.1 读写文件前打开文件的两个方法 1.2 写 ...
- GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态
GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...
- 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠
本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...
- 分享一个python cookbook的在线教程地址
分享一个python cookbook的在线教程地址: http://python3-cookbook.readthedocs.org/zh_CN/latest/ 翻译者:熊能 转载于:https:/ ...
最新文章
- 电视机检测大巴徘徊在英格兰的大街上
- Windows XP权限
- HDU2604 Queuing
- 插入排序法(思路及代码实现)
- oracle 如何创建序列squence
- html如何添加文档,如何在HTML中添加行
- 12021.ADS7952采集芯片
- Nagios各组件简述及nrpe详解
- OpenGL基础12:进入3D世界
- Linux下C语言编程入门-8关于计时器
- DEVCON.EXE管理USB
- 《跑步人生》 作者:村上春树
- mysql获取最大天数_mysql如何查询两个日期之间最大的连续登录天数
- ISO26262功能安全 安全等级和量化指标
- 狗哥历经四个小时整理大佬的内容,你确定不来看一下?
- Linux学习路线及网络编程经典书籍
- 汽车配件管理系统分析报告
- mysql创建联合索引_mysql如何创建多个联合索引
- web前端编辑所见即所得
- 小程序广告主和流量主相关