python paramiko 模块

摘要:
paramiko模块提供远程登录服务器的功能,以执行命令并基于ssh连接上传和下载文件。这是一个需要在使用前安装的第三方软件包。pip主页:http://www.paramiko.org/pipgithubaddr:https://github.com/paramiko官方推荐的安装方法:pipinstallparamiko示例代码:1。简单ssh函数#/Usr/bin/envpython3#-*-coding:utf-8-*-#authorheavynimportparamiko#创建ssh对象ssh=paramiko。SSH Client()#允许连接不在主机文件中的know_ Host SSH.set中_ missing_ Host_key_ Policy#链接服务器SSH。connect#定义标准输入、标准输出、错误输出、执行命令stdin、stdout、stderr=ssh.exec _ command#获取命令执行结果=stdout。read()。decode()#打印命令执行结果Print#关闭链接ssh。close()2。简单ftp函数#/usr/bin/envpython3#-*-coding:utf-8-*-#authorheavynimportparamikoclassFtp:def__init__:Self。运输=paramiko。自行运输。运输connectdefput:#上传local_path=input.strip()remote_path=input.strip)sftp=paramik.SFTPClient.from_Transportsftp。自我。运输closenewftp=Ftp()newftp。put()使用不带密码的ssh密钥登录#!

1.什么是paramiko?

paramiko模块提供了基于ssh连接,进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。

pip homepage: http://www.paramiko.org/

pip github addr: https://github.com/paramiko

官方推荐安装方法:

pip install paramiko

 示例代码:

 1.简易ssh功能

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author heaven

import paramiko

#创建ssh对象
ssh = paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#链接服务器
ssh.connect(hostname='10.11.1.1',port=2704,username='python',password='123456')
#定义标准输入,标准输出,错误输出,执行命令
stdin,stdout,stderr = ssh.exec_command('ls')
#获取命令执行结果
result = stdout.read().decode()
#打印命令执行结果
print(result)
#关闭链接
ssh.close()

2.简易ftp功能

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author heaven

import paramiko
#创建transport对象
transport = paramiko.Transport(('localhost',2704))
#连接服务器
transport.connect(username='python',password='123456')
#创建ftp对象
sftp = paramiko.SFTPClient.from_transport(transport)
#put  将本地的a.txt文件上传到对方服务器指定目录(上传)
sftp.put('/home/python/a.txt','/home/python/heaven/test.txt')

#get 下载
#sftp.get('remote_path','local_path')  
transport.close

ssh升级版本:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author heaven

import paramiko

#创建ssh对象
ssh = paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#链接服务器
ssh.connect(hostname='172.16.25.25',port=2704,username='python',password='123456')

while True:
    try:
        yourinput = input("请输入你要执行的命令: ").strip();
        stdin,stdout,stderr = ssh.exec_command(yourinput);
        if len(yourinput) == 0:
            continue;
        result = stdout.read().decode();
        print(result);
    except KeyboardInterrupt as e:        #注意此处异常的写法,python2与python3中不一样,python3中必须用as
        print('你已经退出登录!  {}'.format(e));
        break
        
#关闭链接
ssh.close()

sftp升级版本:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author heaven

import paramiko

class Ftp(object):
    def __init__(self):
        self.transport = paramiko.Transport(('localhost',2704))
        self.transport.connect(username='python',password='123456')
        
    
    def put(self):
    #上传
        local_path = input("请输入本地要上传的文件的绝对路径: ").strip()
        remote_path = input("请输入远端服务器文件的绝对路径: ").strip()
        sftp = paramiko.SFTPClient.from_transport(self.transport)
        sftp.put(local_path,remote_path)
        self.transport.close
        
    
newftp = Ftp()
newftp.put()        

使用ssh秘钥免密方式登录

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author heaven

#在使用此方法登录之前必须要保证两台通信的主机已经完成了秘钥交互,能够远程免密登录
import paramiko

#创建链接key对象,指定本地的RSA私钥文件,如果建立秘钥对时候有设置有密码,password为设定的密码,如无则不用指定password参数
pkey = paramiko.RSAKey.from_private_key_file('/home/python/.ssh/id_rsa')

#创建链接对象
ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#使用秘钥链接
ssh.connect(hostname='11.20.11.11',port=2704,username='python',pkey=pkey)

stdin,stdout,stderr=ssh.exec_command('ls')
print(stdout.read().decode())
ssh.close()

ftp使用key链接

#!/usr/bin/env python
#coding:utf8
#必须先将公钥文件传输到服务器的~/.ssh/authorized_keys中
import paramiko
# 指定本地的RSA私钥文件,如果建立密钥对时设置的有密码,password为设定的密码,如无不用指定password参数
pkey = paramiko.RSAKey.from_private_key_file('id_rsa_1024')

#创建transport对象绑定主机和端口,指定用户和密钥连接
transport = paramiko.Transport(('172.16.32.129',2323))
transport.connect(username='root',pkey=pkey)
ssh = paramiko.SSHClient()
ssh._transport = transport  #类属性赋值
#允许将信任的主机自动加入到known_hosts列表
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#执行命令
stdin,stdout,stderr=ssh.exec_command('free -m')
print(stdout.read().decode())
ssh.close()

免责声明:文章转载自《python paramiko 模块》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇最长公共前缀深度包检测(DPI)详细介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

加载配置文件

前言:如果我们需要调用某个方法,其中的参数为可更改,我们最好是采用配置文件的方式来写,这样便于管理 比如我在写一个通过SFTP连接服务器的环节 public class SFTPUtil { private static Logger log=Logger.getLogger(SFTPUtil.class.getName());...

基于移动最小二乘的图像变形和曲线拟合

在最近的项目中经常遇到给出几个点需要拟合出一条曲线。 在离散的点云中,求曲线曲面拟合,不能简单地连接这些点,如果知道曲线曲面的形式,如为二次曲线等,可以简单地使用最小二乘法估计参数;但如果曲线曲面形式未知,可以使用移动最小二乘法或者主曲线方法。 转载:https://blog.csdn.net/liumangmao1314/article/details/...

Python读写文件之换行符

系统的换行符和路径分隔符 os模块可以获取当前系统的换行符和路径分隔符 windows操作系统 >>> os.linesep ' ' >>> os.sep '\' linux操作系统 >>> import os >>> os.linesep #换行符 ' ' >...

python面试1

注:本面试题来源于网络,转载请注明来自http://www.cnblogs.com/goodhacker/p/3366618.html。 1. (1)python下多线程的限制以及多进程中传递参数的方式  python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程...

Python系列:二、数据类型--技术流ken

标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 的六个标准数据类型中: 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组); 可变数据(...

python-flask框架web服务接口开发实例

一、flask flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。本文就用flask来开发一个接口。 二:安装框架 flask需要先安装再引用。pip install flask 安装成功见截图 三:flask开发接口流程 用flask开发接口的流程为: #__name__代表当前的python文件。把当前的pyth...