python paramiko使用_python paramiko 模块使用方法

pythonparamiko paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,可以实现远程文件的上传,下载或通过ssh远程执行命令。项目地址:https://github.com/paramiko/paramiko

一、安装root@ubuntu:~/paramiko# pip install paramiko

测试是否安装成功>>> import paramiko

>>>

二、上传文件到远程服务器原理:通过SFTPClient类根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。实现远程文件上传、下载。任务:10. 1.101.187向10.1.101.186发送文件。10.1.101.187 目录/root/paramiko  有三个文件 paramikosend.py  test  test.tar10.1.101.186 目录/root/paramiko   开始为空文件夹执行python paramikosend.py,代码如下root@ubuntu:~/paramiko# cat paramikosend.py

import paramiko,datetime,os

hostname = '10.1.101.186'

username = 'root'

password = '123456'

port = 22

local_dir = '/root/paramiko'

remote_dir = '/root/paramiko'

try:

t=paramiko.Transport((hostname,port))

t.connect(username=username,password=password)

sftp = paramiko.SFTPClient.from_transport(t)

files = os.listdir(local_dir)

for f in files:

sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f))

t.close()

except Exception:

print "connect error!"

结果:

三、从远程服务器下载文件原理:通过SFTPClient类根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。实现远程文件上传、下载。任务:现在10.1.101.186的/root/paramiko/temp186目录有两个文件,将其下载到10.1.101.187的/root/paramiko/temp187目录。

执行 python paramikoget.py ,代码如下root@ubuntu:~/paramiko# cat paramikoget.py 

import paramiko,datetime,os

hostname = '10.1.101.186'

username = 'root'

password = '123456'

port = 22

local_dir = '/root/paramiko/temp187'

remote_dir = '/root/paramiko/temp186'

try:

t=paramiko.Transport((hostname,port))

t.connect(username=username,password=password)

sftp = paramiko.SFTPClient.from_transport(t)

files = sftp.listdir(remote_dir) #这里需要注意,列出远程文件必须使用sftp

for f in files:

sftp.get(os.path.join(remote_dir,f),os.path.join(local_dir,f))

t.close()

except Exception:

print "connect error!"

结果:

四、执行命令测试原理:通过SSHClient类执行命令。SSHClient类是SSH服务会话的高级表示,封装了传输、通道以及SFTPClient的校验、建立方法,通常用于执行命令。任务:通过10.1.101.187连接到10.1.101.186,然后进入目录/root/paramiko,创建一个目录lxy。执行python paramikocommand.py,代码如下:root@ubuntu:~/paramiko# cat paramikocommand.py 

#!/usr/bin/python

import paramiko

hostname = '10.1.101.186'

username = 'root'

password = '123456'

port = 22

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname=hostname,port=port,username=username,password=password)

stdin, stdout, stderr = ssh.exec_command("cd  /root/paramiko;mkdir lxy")print stdout.readlines()

ssh.close()

结果:

命令中也可以带参数:root@ubuntu:~/paramiko# cat paramikocommand.py 

#!/usr/bin/python

import paramiko

hostname = '10.1.101.186'

username = 'root'

password = '123456'

port = 22

name='testcmd'

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname=hostname,port=port,username=username,password=password)

stdin, stdout, stderr = ssh.exec_command("cd /root/paramiko;mkdir %s" %name)

print stdout.readlines()

ssh.close()

Note:exec_command为单个会话,执行完成之后会回到登录时的缺省目录。比如执行下面两句。stdin, stdout, stderr = ssh.exec_command("cd  /root/paramiko;mkdir %s" %name)

stdin,stdout,stderr = ssh.exec_command('mkdir haha')

haha目录最终是在缺省的/root目录下新建的,而不是/root/paramiko目录。五、python远程执行操作的其他开源模块fabric:fabric是封装了paramiko模块来实现ssh来传输文件的。pexpect:也可以实现ssh 登录到某个用户指定的主机上,运行某个用户指定的命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值