自学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随笔相关推荐

  1. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主

    利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目 ...

  2. python随笔01(robotframework自动化)

    一.dos窗口输入pip提示did not provide a command 解决网址:https://blog.csdn.net/songlh1234/article/details/828823 ...

  3. Python 随笔:用 PIL 库读取图像文件像素长宽大小

    Python 随笔:用 PIL 库读取图像文件像素宽高大小 1.前言 安装 PIL 库(全称是pillow),所以安装命令上的名称是pillow pip install pillow 2. 使用pil ...

  4. Python随笔:设置Windows的pip镜像配置文件 pip.ini

    Python随笔:设置Windows的pip镜像配置文件 pip.ini 1. 前言 首先来看看有什么 pip 镜像地址 清华 https://pypi.tuna.tsinghua.edu.cn/si ...

  5. Python 随笔:与and、或or、非not逻辑运算

    Python 随笔:与and.或or.非not逻辑运算巧用 1. 基础知识 python中的逻辑运算符: and (与) or (或) not (非) 优先级为是not > and > o ...

  6. Python随笔:对 txt 文件进行读写,清除,删除操作

    Python随笔:对 txt 文件进行读写,清除内容,删除操作 文章目录 Python随笔:对 txt 文件进行读写,清除内容,删除操作 1.文件读写 1.1 读写文件前打开文件的两个方法 1.2 写 ...

  7. GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态

    GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态 一个Python模块,用于在Python中使用nvidia-smi以编程方式从NVIDA GPU获取GP ...

  8. 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  9. 分享一个python cookbook的在线教程地址

    分享一个python cookbook的在线教程地址: http://python3-cookbook.readthedocs.org/zh_CN/latest/ 翻译者:熊能 转载于:https:/ ...

最新文章

  1. 电视机检测大巴徘徊在英格兰的大街上
  2. Windows XP权限
  3. HDU2604 Queuing
  4. 插入排序法(思路及代码实现)
  5. oracle 如何创建序列squence
  6. html如何添加文档,如何在HTML中添加行
  7. 12021.ADS7952采集芯片
  8. Nagios各组件简述及nrpe详解
  9. OpenGL基础12:进入3D世界
  10. Linux下C语言编程入门-8关于计时器
  11. DEVCON.EXE管理USB
  12. 《跑步人生》 作者:村上春树
  13. mysql获取最大天数_mysql如何查询两个日期之间最大的连续登录天数
  14. ISO26262功能安全 安全等级和量化指标
  15. 狗哥历经四个小时整理大佬的内容,你确定不来看一下?
  16. Linux学习路线及网络编程经典书籍
  17. 汽车配件管理系统分析报告
  18. mysql创建联合索引_mysql如何创建多个联合索引
  19. web前端编辑所见即所得
  20. 小程序广告主和流量主相关

热门文章

  1. linux 基础命令 1
  2. (二)javascript中int和string转换
  3. eclipse 统计代码行数
  4. 又拍网架构-又一个用到python的网站(转载)
  5. ORACLE SQL - UPDATE、DELETE、INSERT优化和使用技巧
  6. Ubuntu下apache配置文件路径
  7. winxp下安装虚拟机,并安装linux操作系统
  8. 蓝桥杯 ALGO-85 算法训练 进制转换
  9. java项目学习_一个Java项目的学习
  10. 腾达ac9虚拟服务器,腾达AC9官方定制固件1.0版-加广告屏蔽、迅雷等