python paramiko连接ssh实现命令

 更新时间:2022年07月28日 16:08:21   作者:wangfeng7399  
这篇文章主要为大家介绍了python paramiko连接ssh实现的命令详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

paramiko

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

安装

pip install paramiko

模块使用

执行命令—用户名+密码

#!/usr/bin/env python
#coding:utf-8
import paramiko
# 建立一个sshclient对象
ssh = paramiko.SSHClient()
# 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 调用connect方法连接服务器
ssh.connect('192.168.1.108', 22, 'alex', '123')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 结果放到stdout中,如果有错误将放到stderr中
print(stdout.read().decode('utf-8'))
# 关闭连接
ssh.close();

 paramiko\ecdsakey.py:164: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
  self.ecdsa_curve.curve_class(), pointinfo

paramiko\kex_ecdh_nist.py:39: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  m.add_string(self.Q_C.public_numbers().encode_point())

paramiko\kex_ecdh_nist.py:96: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
  self.curve, Q_S_bytes

paramiko\kex_ecdh_nist.py:111: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  hm.add_string(self.Q_C.public_numbers().encode_point())

 原因

paramiko 2.4.2 依赖 cryptography,而最新的cryptography==2.5里有一些弃用的API。

解决

删掉cryptography,安装2.4.2,就不会报错了。

pip uninstall cryptography

pip install cryptography==2.4.2

执行命令 -秘钥

import paramiko
private_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('主机名 ', 端口, '用户名', key)
stdin, stdout, stderr = ssh.exec_command('df')
print(stdout.read().decode("utf-8"))
ssh.close()

上传下载文件—用户名密码

import os,sys
import paramiko
t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='derek',password='123')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test.py','/tmp/test.py') 
t.close()
import os,sys
import paramiko
t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='derek',password='123')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test.py','/tmp/test2.py')
t.close()

上传下载文件-用户名秘钥

import paramiko
pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='derek',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('/tmp/test3.py','/tmp/test3.py') 
t.close()
import paramiko
pravie_key_path = '/home/auto/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport(('182.92.219.86',22))
t.connect(username='derek',pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get('/tmp/test3.py','/tmp/test4.py') 
t.close()

以上就是python paramiko连接ssh实现命令的详细内容,更多关于python paramiko连接ssh的资料请关注脚本之家其它相关文章!

相关文章

  • 利用python如何实现猫捉老鼠小游戏

    利用python如何实现猫捉老鼠小游戏

    这篇文章主要给大家介绍了关于利用python如何实现猫捉老鼠小游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python中的“_args”和“__kwargs”用法详解

    Python中的“_args”和“__kwargs”用法详解

    *args 和 **kwargs 主要⽤于函数定义,你可以将不定数量的参数传递给⼀个函数,这篇文章主要介绍了Python中的“_args”和“__kwargs”用法,需要的朋友可以参考下
    2023-01-01
  • tensorflow 实现数据类型转换

    tensorflow 实现数据类型转换

    今天小编就为大家分享一篇tensorflow 实现数据类型转换,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 简单了解python关系(比较)运算符

    简单了解python关系(比较)运算符

    这篇文章主要介绍了简单了解python关系(比较)运算符,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python利用sklearn包编写决策树源代码

    python利用sklearn包编写决策树源代码

    这篇文章主要为大家详细介绍了python利用sklearn包编写决策树源代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python3标准库之dbm UNIX键-值数据库问题

    Python3标准库之dbm UNIX键-值数据库问题

    dbm是面向DBM数据库的一个前端,DBM数据库使用简单的字符串值作为键来访问包含字符串的记录。这篇文章主要介绍了Python3标准库:dbm UNIX键-值数据库的相关知识,需要的朋友可以参考下
    2020-03-03
  • python3.7通过thrift操作hbase的示例代码

    python3.7通过thrift操作hbase的示例代码

    HBase是一个分布式的、面向列的开源数据库,其是Apache的Hadoop项目的子项目。这篇文章主要介绍了python3.7通过thrift操作hbase的示例代码,需要的朋友可以参考下
    2020-01-01
  • Python使用pyfinance包进行证券收益分析

    Python使用pyfinance包进行证券收益分析

    在查找如何使用Python实现滚动回归时,发现一个很有用的量化金融包——pyfinance。顾名思义,pyfinance是为投资管理和证券收益分析而构建的Python分析包,主要是对面向定量金融的现有包进行补充,如pyfolio和pandas等。pyfinance包含六个模块,下面将一一介绍
    2021-11-11
  • Python零钱兑换的实现代码

    Python零钱兑换的实现代码

    假如有这样一个问题给你一个整数数组 coins ,表示不同面额的硬币以及一个整数 amount ,表示总金额,计算并返回可以凑成总金额所需的最少的硬币个数,接下来通过示例代码给大家介绍Python零钱兑换问题,感兴趣的朋友一起看看吧
    2022-05-05
  • python 实现读取一个excel多个sheet表并合并的方法

    python 实现读取一个excel多个sheet表并合并的方法

    今天小编就为大家分享一篇python 实现读取一个excel多个sheet表并合并的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02

最新评论