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模块 死活安不上,在网上不断的找资料,可是没有用,没有用啊 ...
随机推荐
- spring案列——xml配置
一.需要的jar包 spring.jar(官网下载) commons-logging.jar 二.项目结构 三.entity(实体类) package com.team.model; public c ...
- 自适应XAML布局经验总结 (一)原则和页面结构设计
XAML布局回顾 Grid和StackPanel是核心布局,尤其以Grid最为重要. Grid是网格布局,XAML的设计者有可能参考了Html里的Table设计了Grid布局,但进行了改进.Html中 ...
- python 删除一个目录下的所有文件
一个目录下有文件,文件夹,文件夹里又有文件.文件夹....用python脚本,实现,递归删除一个目录下的所有文件: 目录结构如下: 其中我们要删除所有文件 代码实现如下: import os CUR_ ...
- ASP.NET Core 2 学习笔记(三)中间件
之前ASP.NET中使用的HTTP Modules及HTTP Handlers,在ASP.NET Core中已不复存在,取而代之的是Middleware.Middleware除了简化了HTTP Mod ...
- .net mvc使用FlexPaper插件实现在线预览PDF,EXCEL,WORD的方法
FlexPaper插件可以实现在浏览器中在线预览pdf,word,excel等. 在网上看到很多关于这个插件实现预览的技术,但是很难做到word和excel在线预览. pdf很好实现. 首先下载相关的 ...
- win 10 mysql8.0安装
1.解压缩安装包(记住自己的解压到那个目录,后面需要) 2.找到此电脑,然后找到属性(小编这里win10) 3.点击左侧高级系统设置 4.选择下面的环境变量 5.选择下面的新建,然后看图片,上面输入M ...
- 读懂Netty的高性能架构之道
Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用 ...
- JAVA抽象类和抽象方法(abstract)
一.抽象(abstract)的使用 当父类的某些方法不确定时,可以用abstract关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]. 我们都知道,父类是将子类所共同拥有的属性和 ...
- Java并发编程之happens-before
happens-before是JMM最核心的概念,理解happens-before是理解JMM的关键. 一.JMM的设计 首先,让我们先分析一下JMM的设计意图.从JMM的设计者的角度,在设计JMM的 ...
- jvm高级特性(1)(内存泄漏实例)
jvm内存结构回顾: .8同1.7比,最大的差别就是:元数据区取代了永久代.元空间的本质和永久代类似,都是对JVM规范中方法区的实现. 不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中, ...