python_paramiko
目录:
- paramiko模块介绍
- paramiko模块安装
- paramiko模块使用
一、paramiko模块介绍
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。它包含两个常用模块,SSHClient()模块,SFTPClient()模块。
二、paramiko模块安装
pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto
pip3 install pycrypto
pip3 install paramiko
三、paramiko模块使用
1、执行远程命令SSHClient()模块
1 #!/usr/bin/python
2
3 import paramiko
4
5
6
7 ssh = paramiko.SSHClient()
8
9 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
10
11 ssh.connect("某IP地址",22,"用户名", "口令")
12
13 stdin, stdout, stderr = ssh.exec_command("你的命令")
14
15 print stdout.readlines()
16
17 ssh.close()

2、执行远程命令SSHClient()模块之密钥登录
1 import paramiko
2
3 private_key_path = '/home/auto/.ssh/id_rsa'
4 key = paramiko.RSAKey.from_private_key_file(private_key_path)
5
6 ssh = paramiko.SSHClient()
7 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
8 ssh.connect('主机名 ', 端口, '用户名', key)
9
10 stdin, stdout, stderr = ssh.exec_command('df')
11 print stdout.read()
12 ssh.close()
1 import paramiko
2
3 pravie_key_path = '/home/auto/.ssh/id_rsa'
4 key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
5
6 t = paramiko.Transport(('182.92.219.86',22))
7 t.connect(username='wupeiqi',pkey=key)
8
9 sftp = paramiko.SFTPClient.from_transport(t)
10 sftp.put('/tmp/test3.py','/tmp/test3.py')
11
12 t.close()
13
14 import paramiko
15
16 pravie_key_path = '/home/auto/.ssh/id_rsa'
17 key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
18
19 t = paramiko.Transport(('182.92.219.86',22))
20 t.connect(username='wupeiqi',pkey=key)
21
22 sftp = paramiko.SFTPClient.from_transport(t)
23 sftp.get('/tmp/test3.py','/tmp/test4.py')
24
25 t.close()
3、上传文件到远程SFTPClient()模块
1 #!/usr/bin/python
2
3 import paramiko
4
5
6
7 t = paramiko.Transport(("某IP地址",22))
8
9 t.connect(username = "用户名", password = "口令")
10
11 sftp = paramiko.SFTPClient.from_transport(t)
12
13 remotepath='/tmp/test.txt'
14
15 localpath='/tmp/test.txt'
16
17 sftp.put(localpath,remotepath)
18
19 t.close()
4、远程下载到本地SFTPClient()模块
1 import paramiko
2
3
4
5 t = paramiko.Transport(("某IP地址",22))
6
7 t.connect(username = "用户名", password = "口令")
8
9 sftp = paramiko.SFTPClient.from_transport(t)
10
11 remotepath='/tmp/test.txt'
12
13 localpath='/tmp/test.txt'
14
15 sftp.get(remotepath, localpath)
16
17 t.close() 复制代码
5、整合使用:
1 #coding:utf-8
2 import paramiko
3 import uuid
4
5 class SSHConnection(object):
6
7 def __init__(self, host='192.168.2.103', port=22, username='root',pwd=''):
8 self.host = host
9 self.port = port
10 self.username = username
11 self.pwd = pwd
12 self.__k = None
13
14 def connect(self):
15 transport = paramiko.Transport((self.host,self.port))
16 transport.connect(username=self.username,password=self.pwd)
17 self.__transport = transport
18
19 def close(self):
20 self.__transport.close()
21
22 def upload(self,local_path,target_path):
23 # 连接,上传
24 # file_name = self.create_file()
25 sftp = paramiko.SFTPClient.from_transport(self.__transport)
26 # 将location.py 上传至服务器 /tmp/test.py
27 sftp.put(local_path, target_path)
28
29 def download(self,remote_path,local_path):
30 sftp = paramiko.SFTPClient.from_transport(self.__transport)
31 sftp.get(remote_path,local_path)
32
33 def cmd(self, command):
34 ssh = paramiko.SSHClient()
35 ssh._transport = self.__transport
36 # 执行命令
37 stdin, stdout, stderr = ssh.exec_command(command)
38 # 获取命令结果
39 result = stdout.read()
40 print (str(result,encoding='utf-8'))
41 return result
42
43 ssh = SSHConnection()
44 ssh.connect()
45 ssh.cmd("ls")
46 ssh.upload('s1.py','/tmp/ks77.py')
47 ssh.download('/tmp/test.py','kkkk',)
48 ssh.cmd("df")
49 ssh.close() 复制代码
python_paramiko的更多相关文章
- Python_paramiko模块
paramiko模块安装:pip3 install paramiko paramiko模块(模拟SSH),是基于SSH(网络安全协议)用于连接远程服务器并执行相关操作. ssh: 基于口令的安全验证 ...
随机推荐
- Scrapy学习篇(九)之文件与图片下载
Media Pipeline Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines . 这些pipeline有些共同的方 ...
- html5 + thyleaf引擎
偶然与巧合 舞动了蝶翼 谁的心头风起 前赴而后继 万千人追寻 荒漠唯一菩提 似擦肩相遇 或擦肩而去 命运犹如险棋 无数时间线 无数可能性 终于交织向你
- 全面了解Ngnix的主要应用的场景
前言 本文只针对 Nginx 在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得.所以还请见谅,同时欢迎留言交流 ...
- Numpy学习笔记(二)
(1)NumPy - 切片和索引 l ndarray对象中的元素遵循基于零的索引. 有三种可用的索引方法类型: 字段访问,基本切片和高级索引. l 基本切片 Python 中基本切片概念到 n 维 ...
- oracle自定义函数返回结果集
首先要弄两个type,不知道什么鬼: 1. create or replace type obj_table as object ( id ), name ), ) ) 2. create or re ...
- pass parameter by endpoint, this is for websocket
使用了Java的字符串:@ServerEndpoint("/chat/{room}")public class MyEndpoint {@OnMessagepublic void ...
- 源码阅读经验谈-slim,darknet,labelimg,caffe(1)
本文首先谈自己的源码阅读体验,然后给几个案例解读,选的例子都是比较简单.重在说明我琢磨的点线面源码阅读方法.我不是专业架构师,是从一个深度学习算法工程师的角度来谈的,不专业的地方请大家轻拍. 经常看别 ...
- js 生成手机图片并保存到相册
1.注意权限问题 2.调用HTML5+api 3.优化显示 4.注意兼容ios.Android
- ubuntu16下用QT5实现对话框应用
ubuntu16下用QT5,实现对话框程序,步骤:生成界面Dialog.ui,将它应用到主程序,通过主程序显示. 一 界面练习 1 Dialog.ui界面生成 在命令行输入:designer 进入界面 ...
- 手写注解实现SpringMVC
参考:https://www.cnblogs.com/Shock-W/p/6617068.html