专栏首页Python乱炖paramiko——一个专门为Linux设计的模块

paramiko——一个专门为Linux设计的模块

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,下面我们就来看看如何去使用paramiko模块吧。

安装模块

pip install paramiko

安装结束之后我们就可以来使用这个模块了

使用模块

import paramiko

#连接三要素,主机,用户名,密码

host = '47.95.204.151'

username ='root'

password ='666666666'

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(host, 22, username, password)

stdin, stdout, stderr = ssh.exec_command('df -hT')

print(stdout.read().decode('utf-8'))

ssh.close()

可以对文件基本的操作,创建,修改,删除:

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

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

sftp = paramiko.SFTPClient.from_transport(t)

#创建目录

sftp.mkdir("/home/userdir", 0755)

#删除目录

sftp.rmdir("/home/userdir")

#文件重命名

sftp.rename("/home/test.sh", "/home/testfile.sh")

#打印文件信息

print (sftp.stat("/home/testfile.sh"))

#打印目录列表

print (sftp.listdir("/home"))

其他方法:

都是用来远程对文件进行操作的。

其中两个方法put和get我们来细看一下。

关于put,它是用来上传文件的,我们可以使用put将我们需要上传的文件,传到服务器中,这样就可以提高很多效率。上传是需要指定上传文件和上传地址。

sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('log.log','/tmp/log.log')

同样的,关于get,用来下载文件的方法,我们只需要指明我们需要下载的文件和下载地址就可以了:

sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/log.log', 'log3.log')

例如,我们现在要上传信息到server:

import paramiko
pravie_key_path = '/root/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('172.16.0.19', 22))
t.connect(username='root', pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('log.log','/tmp/log.log')
t.close()

我们现在要下载服务器的log信息:

import paramiko
pravie_key_path = '/root/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('172.16.0.19', 22))
t.connect(username='root', pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/log.log', 'log3.log')
t.close()

如果我们只想执行一些口令,可以用exec_command方法:

stdin, stdout, stderr = ssh.exec_command("cd  /usr/local;mkdir yuqing;ls -ll")
print stdout.readlines()

多个操作直接采用分号隔开即可。

最后说一下,任何操作完都要将连接关闭:

ssh.close()

本文分享自微信公众号 - Python乱炖(Cooking_python),作者:我被狗咬了

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《数码宝贝》第一部中的泉光子郎的编程是什么水平?(文末赠光子郎精美壁纸)

    受到夜路川答主勇于用 python 进化自己室友的激励,我顺便深挖了一下《数码宝贝》第一部第五集中光子郎在电脑上敲出的代码,终于把原始代码跑了出来,视频在最后。...

    我被狗咬了
  • 数据解读---B站火过蔡徐坤的“鬼畜“区巨头们

    前几日,蔡徐坤一纸律师函发往B站,律师函内容显示,“B站上存在着大量侵害委托人的内容,且点击率高,传播范围广,影响十分恶劣。这些内容的制作、上传、散布、转载都已...

    我被狗咬了
  • Taskflow 有兴趣了解一下?

    最近在工作中会经常使用到Taskflow这个东西,看起来虽然不是很难,但是遇到各种重写的时候看起来还是有点烦的,这时候就必须来了解一下taskflow这样一个东...

    我被狗咬了
  • redo日志文件学习(22天)

    关于redo日志文件,今天因为要做redo日志的在线迁移,所以特意做了个简单的总结。 1. 如果要把redo的切换信息显示到alert日志中,需要设置个参数。...

    jeanron100
  • 【MySQL (六) | 详细分析MySQL事务日志redo log】

    为了最大程度避免数据写入时 IO 瓶颈带来的性能问题,MySQL 采用了这样一种缓存机制:

    周三不加班
  • 其实我们可以少写点 if else 和 switch

    内容来源:作者—— 潇湘待雨,链接:https://www.cnblogs.com/pqjwyn/p/10247336.html,好文请多支持!感谢您的阅读~

    IT大咖说
  • 其实我们可以少写点if else和switch

    不过他强任他强,if-else全搞定,搬就完了。但是随着业务迭代或者项目交接,自己在看自己或者别人的if代码的时候,心情就不再表述了,各自深有体会。所以我们一起...

    java架构师
  • 其实我们可以少写点if else和switch

    不过他强任他强,if-else全搞定,搬就完了。但是随着业务迭代或者项目交接,自己在看自己或者别人的if代码的时候,心情就不再表述了,各自深有体会。所以我们一起...

    好好学java
  • MySQL 中的 DML 语句执行流程,你理解的跟我一样吗?

    在DML语句执行的过程中,主要会涉及到两个日志——redo log和bin log,而这两个日志是数据库 WAL (Write Ahead Logging,先写...

    Java程序猿阿谷
  • 摩拜 [编程题] 字符串问题

    版权声明:本文为博主-姜兴琪原创文章,未经博主允许不得转载。 https://blog.csdn.net/jxq0816/article/details...

    week

扫码关注云+社区

领取腾讯云代金券