Python远程连接主机之paramiko模块
Python的paramiko模块能够连接远程主机,并在该主机上执行命令,和该主机之间进行文件传输。paramiko支持用明文密码登录远程主机和秘钥登录。使用之前要安装一下这个模块哈,pip install paramiko,不会安装可以百度哈。
(1)密码登录
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Author: "Liuyouyuan"
# Date: 2018/1/23 import paramiko def run_cmd(host, port, user, passwd, cmd):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, port=port, username=user, password=passwd)
stdin, stdout, stderr = ssh.exec_command(cmd) stdout = stdout.read()
stderr = stderr.read()
ssh.close()
if not stderr:
print(stdout.decode())
else:
print(stderr.decode()) if __name__ == '__main__':
HOST = "10.129.205.151"
PORT = 22
USER = "root"
PASSWD = "******"
cmd = "df -h"
run_cmd(HOST, PORT, USER, PASSWD, cmd)
来看执行结果:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 17G .8G 11G % /
devtmpfs 897M 897M % /dev
tmpfs 912M 84K 912M % /dev/shm
tmpfs 912M 9.0M 903M % /run
tmpfs 912M 912M % /sys/fs/cgroup
/dev/sda1 1014M 173M 842M % /boot
tmpfs 183M 16K 183M % /run/user/
tmpfs 183M 183M % /run/user/
(2)秘钥登录
def run_cmd_pkey(host, port, user, rsa_file):
"""
linux 端创建秘钥 ssh-keygen
把要连的机子的公钥改名 mv id_rsa.pub authorized_keys
想要连接哪台机器就直接把公钥copy到该机器的用户home下 格式:/root/.ssh
"""
private_key = paramiko.RSAKey.from_private_key_file(rsa_file) # 指定私钥所在文件
ssh = paramiko.SSHClient() # 创建ssh对象 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 允许连接不在know_hosts文件中的主机
ssh.connect(hostname=host, port=port, username=user, pkey=private_key) # 连接服务器
stdin, stdout, stderr = ssh.exec_command("df") # 执行命令 stdout = stdout.read()
stderr = stderr.read()
ssh.close() # 关闭连接
if not stderr:
print(stdout.decode())
else:
print(stderr.decode())
(3)上传下载文件明文密码版本
import paramiko
def ssh_transfer_file(host, port, user, passwd, local_file, remote_file):
transport = paramiko.Transport(host, port)
transport.connect(username=user, password=passwd)
sftp = paramiko.SFTPClient.from_transport(transport)
# sftp.put(local_file, remote_file) # 从本地上传文件到远程主机
sftp.get(remote_file, local_file) # 从远程主机下载到本地
transport.close() if __name__ == '__main__':
HOST = "10.129.205.151"
PORT = 22
USER = "root"
PASSWD = "******"
cmd = "df -h"
remote_file = "/data/download/nginx-1.12.0.tar.gz"
local_file = "nginx-1.12.0.tar.gz"
ssh_transfer_file(HOST, PORT, USER, PASSWD, local_file, remote_file)
先测试下下载功能。
首先看下远程主机上的文件:
[root@liuyouyuan download]# ll /data/download
total
drwxr-xr-x. lyy lyy Jul nginx-1.12.
-rw-r--r--. root root Apr nginx-1.12..tar.gz
drwxr-xr-x. Jul Python-3.6.
-rw-r--r--. root root Mar Python-3.6..tar.xz
然后运行代码后看看本地:

这就已经把nginx压缩包下载到本地了。上传功能就不做演示了,有兴趣的可以自己测试一下哈。
(4)上传下载文件秘钥版
def ssh_transfer_file_pkey(host, port, user, rsa_file, local_file, remote_file):
private_key = paramiko.RSAKey.from_private_key_file(rsa_file) # 指定私钥所在文件
transport = paramiko.Transport(host, port)
transport.connect(username=user, pkey=private_key)
sftp = paramiko.SFTPClient.from_transport(transport) sftp.put(local_file, remote_file) # 从本地上传文件到远程主机
# sftp.get(remote_file, local_file) # 从远程主机下载到本地
transport.close()
是不是比较简单呢?
Python远程连接主机之paramiko模块的更多相关文章
- python远程登录服务器(paramiko模块安装和使用)
转自:http://www.jb51.net/article/46285.htm 一:简介 由paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器 ...
- python远程连接paramiko 模块和堡垒机实现
paramiko使用 paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接.命令执行.文件传输.中间SSH代理功能 安装 pip install pa ...
- Python远程连接模块-Telnet
Python远程连接模块-Telnet 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 虽然现在主流的python版本还是2.7,相信2020年python程序员都会偏向Python ...
- Python 使用Python远程连接并操作InfluxDB数据库
使用Python远程连接并操作InfluxDB数据库 by:授客 QQ:1033553122 实践环境 Python 3.4.0 CentOS 6 64位(内核版本2.6.32-642.el6.x86 ...
- Python远程连接Redis
import redisr=redis.Redis(host='192.168.56.102',port=6379,db=0,password='jinxfredis' )r.set('name',' ...
- python网络编程——SocketServer/Twisted/paramiko模块
在之前博客C/S架构的网络编程中,IO多路复用是将多个IO操作复用到1个服务端进程中进行处理,即无论有多少个客户端进行连接请求,服务端始终只有1个进程对客户端进行响应,这样的好处是节省了系统开销(se ...
- python 3 并发编程多进程 paramiko 模块
python 3 paramiko模块 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的pa ...
- Python远程连接MySQL数据库
使用Python连接数据库首先需要安装Python的数据库驱动. 我的本地只装了Python,并没有装MySQL,当我使用命令: sudo pip install mysql-python 安装驱动( ...
- python第四十九天--paramiko模块安装大作战
准备开始学习:paramiko模块,发现这个模块十分难搞 安装不上 搞了半天,win10 64下 pytyon 3.6 的 paramiko模块 死活安不上,在网上不断的找资料,可是没有用,没有用啊 ...
随机推荐
- 深浅 buffer
var str = "深入浅出"; var buf = new Buffer(str, 'utf-8'); console.log(buf); 这种情况下是数字 var str = ...
- Create Your Content and Structure
The original page source Content is the most important aspect of any site. So let's design for the c ...
- svn服务器快速搭建及简单配置
http://www.360doc.com/content/11/0711/19/5131531_132950891.shtml 简介Svn已经不容质疑的成为了一款流行的代码控制工具,但是你是否还在为 ...
- UniGUI的TUniLoginForm窗口自定义背景色
uniGUI的TUniLoginForm类创建的登录窗口默认是不带颜色,可以自定义css风格来改变背景颜色. 一般是通过在UniServerModule中,在CustcomSS属性中,修改extjs的 ...
- 读《深入理解Windows Phone 8.1 UI控件编程》1.4.3 框架的应用示例:自定义弹出窗口有感
前些天买了园子里林政老师的两本 WP8.1 的书籍.毕竟想要学得深入的话,还是得弄本书跟着前辈走的. 今天读到 1.4.3 节——框架的应用示例:自定义弹出窗口这一小节.总的来说,就是弄一个像 Mes ...
- (转)(WinForm)FormBorderStyle属性
原地址
- C#使用Linq对DataGridView进行模糊查找
针对DataGridView中已进行过数据绑定,即已向DataGridView中添加了一些数据,可以结合Linq查询,并让匹配查询的行高亮显示,如下图: 具体实现如下: [csharp] ...
- React server rendering —— 网易美学主站同构实录
此文已由作者张硕授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 网易美学主站在最初开发时,因为各种历史原因,引入了例如JQuery,Bootstrop,Angular, Re ...
- series dataframe 的 idxmax()
返回最大值的索引
- python 函数中使用全局变量
python 函数中如果需要使用全局变量,需要使用 global + 变量名 进行声明, 如果不声明,那么就是重新定义一个局部变量,并不会改变全局变量的值 n [1]: a = 3 In [2]: d ...