Python中SSH协议的实现 - Paramiko

操作系统维护时, 一般会通过ssh命令连接到远端服务器, 进行某些操作. 那Python中如何完成这些呢, 当然也能执行ssh命令, 但还有更优雅的方式, 借助Paramiko, 其为实现了SSHv2协议的一开源项目, 下面主要使用了它的ssh和sftp客户端的相关功能.

安装

# pip install paramiko

SSH客户端使用

In [1]: import paramiko

#获取SSHClient对象.

In [2]: ssh = paramiko.SSHClient()

#设置host key策略.

#ssh.load_system_host_keys('/root/.ssh/known_hosts')

In [3]: ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#连接到SSH server, connect方法有若干参数, 可据需要设置, 如超时(timeout).

In [4]: ssh.connect('192.168.1.4')

#在SSH server上执行命令, 返回其I/O流, 类似于Python中的文件句柄, 标准输出(stdout)和标准错误(stderr)较常用.

In [5]: stdin, stdout, stderr = ssh.exec_command('ls -l /tmp/')

#获取标准输出

In [11]: for line in stdout:

...:     print '-> ' + line.strip('\n')

...:

-> total 16

-> -rw-r--r-- 1 root root 2 Jan 24 18:27 a.txt

-> -rw-r--r-- 1 root root 2 Jan 24 18:27 b.txt

-> -rw-r--r-- 1 root root 2 Jan 24 18:27 c.txt

-> -rw-r--r-- 1 root root 2 Jan 24 18:27 d.txt

SFTP客户端使用

#在连接到SSH server基础上, 获取SFTPClient对象.

sftp = ssh.open_sftp()

#上传文件

In [13]: sftp.put('/tmp/zz.txt', '/tmp/')

---------------------------------------------------------------------------

IOError                                   Traceback (most recent call last)

<ipython-input-13-0e19a403e0d2> in <module>()

----> 1 sftp.put('/tmp/zz.txt', '/tmp/')

/usr/local/python27/lib/python2.7/site-packages/paramiko/sftp_client.pyc in put(self, localpath, remotepath, callback, confirm)

...

IOError: Failure

In [14]:

为什么报错呢, 命令行上测试正常的...

# sftp 192.168.1.4

Connected to 192.168.1.4.

sftp> put '/tmp/zz.txt' '/tmp'

Uploading /tmp/zz.txt to /tmp/zz.txt

/tmp/zz.txt        100%    3     0.0KB/s   00:00

sftp>

查看sftp_client.py中put方法时, 发现remotepath参数, 需写明目标文件的名称.

:param str remotepath: the destination path on the SFTP server. Note

that the filename should be included. Only specifying a directory

may result in an error.

这样就可以了.

In [21]: sftp.put('/tmp/zz.txt', '/tmp/zz.txt')

Out[21]: <SFTPAttributes: [ size=3 uid=901 gid=901 mode=0100664 atime=1516792881 mtime=1516792881 ]>

#关闭连接

In [24]: sftp.close()

In [25]: ssh.close()

若感兴趣可关注订阅号”数据库最佳实践”(DBBestPractice).

原文地址:http://blog.51cto.com/coveringindex/2064793

时间: 2024-10-18 17:34:22

Python中SSH协议的实现 - Paramiko的相关文章

paramiko:实现ssh协议,对linux服务器资源的访问

介绍 网络传输是遵循协议的,比如SSH,paramiko则是实现了SSHv2协议的一个python库(底层使用的是cryptography).有了paramiko之后,我们便可以通过python使用ssh协议来连接远程服务器执行操作,不用再通过xshell等工具.安装也很简单,直接pip install paramiko即可 paramiko包含两大核心组件:SSHClient和SFTPClient SSHClient的作用类似于Linux下的ssh命令,是对SSH会话的封装,该类封装了传输(t

python中实现sftp

python中想要实现sftp的话可以使用paramiko模块 官网http://www.paramiko.org/ 其中文档有很详细的说明 paramiko很强大,通过python实现SSH协议.可以做到ssh远程登录,sftp上传下载文件. sftp的实现 1.通过密码口令认证 #!/usr/bin/python # -*- coding:utf-8 -*- import paramiko remotedir = "/app/ftpuser/" hostname = "1

python中的tcp示例详解

python中的tcp示例详解  目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. TCP通信需要经过创建连接.数据传送.终止连接三个步骤. TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发

使用python脚本利用SSH协议通过TFTP备份华为交换机配置

前提工作 python中默认没有安装SSH模块,SSH功能依靠paramiko 模块实现,需要自己独立安装,具体安装步骤自行百度. 主要脚本,和之前一样,通过TFTP备份配置 #!/usr/bin/python #-*- coding: utf-8 -*- import re import paramiko          #引入ssh模块,该模块需要单独安装. import time LogTime = time.strftime('%Y-%m-%d_%H-%M-%S') tftp = ra

python中的paramiko模块

python的paramiko模块 此文章转载于https://www.cnblogs.com/breezey/p/6663546.html,如有侵权,请联系. paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连接到另外一个平台.利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输. param

使用python脚本利用SSH协议通过TFTP备份批量备份山石防火墙配置

#!/usr/bin/python #-*- coding: utf-8 -*- import re import paramiko          #引入ssh模块,该模块需要单独安装. import time LogTime = time.strftime('%Y-%m-%d_%H-%M-%S') tftp = raw_input('Please Enter TFTP Sever IP:') import Hillstone_icmp action = raw_input('''Pleas

Python中的端口协议之基于UDP协议的通信传输

UDP协议: 1.python中基于udp协议的客户端与服务端通信简单过程实现 2.udp协议的一些特点(与tcp协议的比较) ------------------------------------------------------------------------------------------------------------------------------------- 一.UDP协议:OSI七层协议中的传输协议的一种(另外一种tcp协议),他们都是一种端口协议 与TCP协

Python自动化运维开发之paramiko(远程批量管理服务器)

一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助. 二:安装方法 安装paramiko有两个先决条件,python和另外一个名为PyCrypto的模块.唯一麻烦的就是安装PyCrypto时,需要GCC库编译,如果没有GCC库会报错,会导致PyCrypto以及paramiko无法安装

python实现ssh及sftp功能

1.在Linux上我们通过scp命令实现主机间的文件传送,通过ssh实现远程登录 ,比如 我们经常使用的xshell远程登录工具,就是基础ssh协议实现window主机远程登录Linux主机 下面简单的在python实现这几个功能   下面使用到paramiko模块,这个不是python的内置模块,我直接通过pycharm下载这个模块, 第一步实现一个简单的ssh登录命令 代码如下: import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允