Python之paramiko基础

一、Paramiko模块

  paramiko是一个自由和开放源码模块使用,实现SSH2协议安全(认证和加密)连接到远程计算机.

二、windwos下安装paramiko模块

#在DOS命令行执行如下命令
pip3 install paramiko

 三、在centos下安装paramiko模块

  1)下载paramiko安装包:

  https://pypi.python.org/packages/source/p/paramiko/paramiko-1.14.0.tar.gz

  2)解压缩文件

  tar -xzf paramiko-1.14.0.tar.gz

  cd paramiko-1.14.0

  执行命令:

  python setup.py install

  安装完成后进入到demos目录中运行如下命令检测安装结果:

  python demo.py localhost

   可能出现问题:  http://www.cnblogs.com/hyli/p/3910585.html

3、可能出现的问题
a.ImportError: No module named ecdsa
  解决办法:
  下载安装包:https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.11.tar.gz#md5=8ef586fe4dbb156697d756900cb41d7c
  cd ecdsa-0.11

  解压缩:
  tar -xzf ecdsa-0.11.tar.gz
  python setup.py install
b.ImportError: No module named Crypto.PublicKey

  解决办法:
  yum -y install pycrypto

四、paramiko简单使用

  1)SSHClient:用于连接远程服务器并执行基本命令

  基于用户名和密码进行连接

  stdout -- 标准输出设备 (printf("..")) 同 stdout。 
  stderr -- 标准错误输出设备 
  两者默认向屏幕输出。 
  但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:lcj
import paramiko
#创建SSH对象
ssh = paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname="192.168.1.104",port = 22,username=‘lcj‘,password=‘123123‘)
#执行操作:
stdin,stdout,stderr = ssh.exec_command(‘ls‘)
#获取执行结果
result = stdout.read()
print(result)
#关闭连接
ssh.close()

   2)分装用户和密码连接执行命令   

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:lcj
import paramiko
#链接服务器
transport = paramiko.Transport((‘192.168.1.152‘,22))
transport.connect(username=‘xiaoluo‘,password=‘123456‘)
#创建SSH对象
ssh = paramiko.SSHClient()
ssh._transport = transport #将链接对象引用给ssh进行连接
#执行操作:
stdin,stdout,stderr = ssh.exec_command(‘du‘)
 #获取执行结果
print(stdout.read())
 #关闭连接
transport.close()

   3)基于公钥秘钥连接   

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:lcj
import paramiko

private_key = paramiko.RSAKey.from_private_key_file(‘/home/auto/.ssh/id_rsa‘)#私钥路径

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname=‘192.168.1.152‘, port=22, username=‘xiaoluo‘, key=private_key)

# 执行命令
stdin, stdout, stderr = ssh.exec_command(‘df‘)
# 获取命令结果
result = stdout.read()
print(result)

# 关闭连接
ssh.close() 

SSHClient封装Transport

  SFTPClient

  用于连接远程服务器并执行上传下载

  1)基于用户名和密码上传下载

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:lcj
import paramiko
#创建paramiko与服务器之间链接
transport = paramiko.Transport((‘192.168.1.152‘,22))
transport.connect(username=‘root‘,password=‘123456‘)
#创建传输通道
sftp = paramiko.SFTPClient.from_transport(transport)
# paramiko001.py 上传至服务器 /home/ww.py  修改文件名为:ww.py
# sftp.put(‘paramiko001.py‘, ‘/home/ww.py‘)
# 将remove_path 下载到本地 local_path
sftp.get(‘/home/ww.py‘, ‘local_path‘)
#关闭连接
transport.close()

   2)基于公钥密码上传下载:  

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:lcj
import paramiko
#创建公钥:/home/auto/.ssh/id_rsa公钥路径
private_key = paramiko.RSAKey.from_private_key_file(‘/home/auto/.ssh/id_rsa‘)
#建立与服务器链接
transport = paramiko.Transport((‘192.168.1.152‘,22))
transport.connect(username=‘root‘,pkey=private_key)
#建立文件传输管道
sftp = paramiko.SSHClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put(‘paramiko001.py‘, ‘/tmp/test.py‘)
# 将remove_path 下载到本地 local_path
# sftp.get(‘remove_path‘, ‘local_path‘)
#关闭连接
transport.close()

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:lcj
import paramiko
import uuid
#创建SSH对象
class SSHConnection(object):
    #连接服务器,并将信息保存至内存中
    def __init__(self, host=‘192.168.1.152‘, port=22, username=‘xiaoluo‘,pwd=‘123456‘):
        self.host = host
        self.port = port
        self.username = username
        self.pwd = pwd
        self.__k = None

    def run(self):
        self.connect()
        pass
        self.close()

    def connect(self):
        transport = paramiko.Transport((self.host,self.port))
        transport.connect(username=self.username,password=self.pwd)
        self.__transport = transport

    def close(self):
        self.__transport.close()

    def cmd(self, command):
        ssh = paramiko.SSHClient()
        ssh._transport = self.__transport
        # 执行命令
        stdin, stdout, stderr = ssh.exec_command(command)
        # 获取命令结果
        result = stdout.read()
        return result
    #创建上传下载函数
    def upload(self,local_path, target_path):
        # 连接,上传
        sftp = paramiko.SFTPClient.from_transport(self.__transport)
        # 将location.py 上传至服务器 /tmp/test.py
        # sftp.put(‘fort-KEY.py‘, target_path)
        sftp.put(‘fort-KEY.py‘, ‘/home/xiaoluo/dd.py‘)
# sftp.get(‘‘)
ssh = SSHConnection()
ssh.connect()

r1 = ssh.cmd(‘df‘)
print(r1)
#将文件paramiko001.py上传至/home/xiaoluo/ff.py并修改文件为ff.py
ssh.upload(‘paramiko001.py‘, "/home/xiaoluo/fc.py")

#关闭连接
ssh.close()

demo

多线程执行批量主机执行命令(等待更新)

 

时间: 2024-12-21 22:45:28

Python之paramiko基础的相关文章

python之paramiko模块

python paramiko模块 1.安装 1225 ./configure #在解压后的python2.7.9的目录下 1226 make 1227 make install 1228 cd /usr/local/ 1229 ls 1230 cd bin 1231 ls 1232 ./python 1233 python 1234 cd /usr/bin 1235 ls 1236 ll python* 1237 mv ./python ./python26 1238 ln -s /usr/l

Python第一周基础篇

<感言:首先感谢alex老师精彩课程,第一周的第一天,随着金角大王的豪言壮语般的心灵鸡汤完美收场.此刻坐在电脑前的我仍是热血澎湃,下定决心好好跟着大王一起学好python> ----祝老师教师节快乐                                      Python第一周基础篇 博文结构: --1--python2.*与python3.*主要区别 --2--python安装与配置 --3--PyCharm开发工具的安装与配置 --4--变量的定义 --5--注释的使用 --

玩蛇(Python)笔记之基础Part3

玩蛇(Python)笔记之基础Part1 一.集合 1.set 无序,不重复序列 {}创建,直接写元素 2.set功能 __init__()构造方法,,使用强制转换就会调用此方法 1 set1 = {'year', 'jiujiujiu'} 2 print(type(set1)) 3 # 创建集合 4 s = set() # 创建空集合 5 li = [11, 22, 11, 22] 6 s = set(li) set 3.集合的基本操作 1 # 操作集合 2 s1 = set() 3 s1.a

【python】--paramiko 连接 AWS 的机器

在使用AWS(亚马逊)的云机器, AWS 管理面板中生成密钥. 使用python的Paramiko 连接服务器 paramiko k = paramiko.RSAKey.from_private_key_file() c = paramiko.SSHClient() c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) c.connect( = = = k ) command =stdin stdoutstderr = c.exec_co

Python&lt;3&gt;字符串基础

字符串是单个字符的字符串序列,有序字符的集合. Python允许字符串包括在双引号或单引号中(代表相同的东西). 序列操作 <1>索引 正向索引,反向索引 <2>分片 包括左边,不包括右边 左边默认为0,右边默认为len(str) 可以设置读取的间隔 <3>合并+.重复* 不可变性 创建后就不能被改变,不能对某一位置赋值 常用表达式 <1>str='' :空字符串 <2>str1.find(str2):返回子字符串的偏移量 <3>st

python的paramiko模块

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连接到另外一个平台.利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输. paramiko常用的类与方法: 1.SSHClient类 SHClient类是SSH服务会话的高级表示,封装了传输.通道以及SFTPClient的校验.建立方法,通常用于

python 解析html基础 HTMLParser库,方法,及代码实例

HTMLParser, a simple lib as html/xhtml parser 官方解释: This module defines a class HTMLParser which serves as the basis for parsing text files formatted in HTML (HyperText Mark-up Language) and XHTML.Unlike the parser in htmllib, this parser is not base

python模块paramiko的上传下载和远程执行命令

#!/usr/bin/python # -*- coding: utf-8 -*- import paramiko,os,datetime server_ip = '192.168.1.123' server_user = 'root' server_passwd = '10241010' server_port = 22 #local_dir='C:\Python27' #remote_dir='/soft2/nba/' def ssh_connect(): ssh = paramiko.SS

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python