Python中操控ssh和sftp

1 Reply

在Python(其实任何语言都是)中操控ssh执行远程命令是一个很麻烦的事情……

首先要突破ssh密码的非交互模式,我之前一直用sshpass拼接各种复杂的字符串。

然后是之后的执行命令只能执行一行,或者是很长的字符串,拼接起来很麻烦。

Python中有一个很活跃的包ssh,它fork自大名鼎鼎的Paramiko,后者是经典的ssh模块,不过作者不再维护了。

1、安装

wget http://pypi.python.org/packages/source/s/ssh/ssh-1.7.14.tar.gz

tar -xzvf ssh-1.7.14.tar.gz

cd ssh-1.7.14

python2.7 setup.py install

上面的安装最好在联网状态下进行,因为它会自动下载依赖包pycrypto。

2、ssh用法:设置缺失Key、登录、执行命令、获取结果

import ssh

# New SSHClient

client = ssh.SSHClient()

# Default accept unknown keys

client.set_missing_host_key_policy(ssh.AutoAddPolicy())

# Connect

client.connect("xxx.coder4.com", port=22, username="xxxx", password="xxxx")

# Execute shell remotely

stdin, stdout, stderr = client.exec_command("ls -alh")

stdout.read()

注意:一定要获取stdout/stderr,然后read,否则远程命令很有可能无法执行完毕。

如果你想执行后台命令,看这里。

输出结果如下:

total 64K

drwxr-xr-x 7 liheyuan liheyuan 4.0K Dec 19 16:31 .

drwxr-xr-x 3 root     root     4.0K Oct 18  2011 ..

-rw------- 1 liheyuan liheyuan 7.5K Mar 20 12:16 .bash_history

-rw-r--r-- 1 liheyuan liheyuan  220 Oct 18  2011 .bash_logout

-rw-r--r-- 1 liheyuan liheyuan 3.1K Nov 28  2011 .bashrc

drwx------ 2 liheyuan liheyuan 4.0K Oct 18  2011 .cache

drwxr-xr-x 3 liheyuan liheyuan 4.0K Oct 18  2011 .config

-rw-r--r-- 1 liheyuan liheyuan  675 Oct 18  2011 .profile

drwx------ 2 liheyuan liheyuan 4.0K Dec 19 16:09 .ssh

drwxr-xr-x 2 liheyuan liheyuan 4.0K Dec 19 16:25 .vim

-rw------- 1 root     root     6.8K Dec 19 16:31 .viminfo

drwxr-xr-x 3 liheyuan liheyuan 4.0K Nov 25  2011 code

-rwxr--r-- 1 liheyuan liheyuan 1.1K Dec 19 16:11 firewall.sh

-rw------- 1 liheyuan liheyuan 1.9K Oct 18  2011 settings.json

lrwxrwxrwx 1 liheyuan liheyuan   28 Oct 18  2011 transmission -> /var/lib/transmission-daemon

3、sftp用法

当拿到一个SSHClient后,我们除了执行命令,还可以开启一个sftp的session,用于传输文件、创建文件夹等等。

# Open sftp session

sftp = client.open_sftp()

# Make a dir

sftp.mkdir('abc')

# Down file from remote to local 这个可能会抛出异常,如果失败的话

sftp.get('firewall.sh', '/tmp/firewall.sh')

# Upload file from local to remote 也可能会抛出异常

sftp.put('/tmp/firewall.sh', 'firewall_new.sh')

最终结果如下:

drwxr-xr-x 3 liheyuan liheyuan 4.0K Jun  1 07:18 abc

-rwxr--r-- 1 liheyuan liheyuan 1.1K Dec 19 16:11 firewall.sh

-rw-r--r-- 1 liheyuan liheyuan 1.1K Jun  1 07:20 firewall_new.sh

总结:用ssh模块开发Linux服务器集群管理、远程部署,绝对是神器啊……

转载于:https://blog.51cto.com/smileyouth/1681590

Python中操控ssh和sftp相关推荐

  1. python mysql ssh隧道_在python中使用ssh隧道连接mysql

    通常为了保证数据库安全,不会允许直接连接数据库,而是需要通过SSH隧道去连接服务器背后的数据库: 今天我在用Python连接远程的MySQL时,直连遇到了无法连接的情况,使用了SSH隧道之后解决了问题 ...

  2. [python] paramiko实现SSH和SFTP

    目录 1.SSHClient 2.SSHClient 封装 Transport 3.基于公钥密钥连接 3.1 基于公钥密钥连接(SSHClient) 3.2 基于公钥密钥连接(SSHClient 封装 ...

  3. linux ssh和sftp区别,使用 SSH 和 SFTP 协议

    导读 通过 SSH 和 SFTP 协议,我们能够访问其他设备,有效而且安全的传输文件等等. 几年前,我决定配置另外一台电脑,以便我能在工作时访问它来传输我所需要的文件.要做到这一点,最基本的一步是要求 ...

  4. python sftp模块_python实现ssh及sftp功能(实例代码)

    1.在Linux上我们通过scp命令实现主机间的文件传送,通过ssh实现远程登录 ,比如 我们经常使用的xshell远程登录工具,就是基础ssh协议实现window主机远程登录Linux主机 下面简单 ...

  5. AutoDL算力租用++Pycharm中SSH、SFTP连接远程服务器

    失踪人口回归,本次主要解决一下电脑无GPU或者GPU算力不够,但是需要进行神经网络训练的情况. 目录 前言 一.GPU租用 二.AutoDL算力租用 1.创建实例 2.SSH远程连接 三.Pychar ...

  6. python中summary_python summary_study.py

    #!/usr/bin/env python #-*- coding:utf-8 -*- import os,sys,time,shutil,re from _ast import Num from d ...

  7. python实现scp功能_如何在Python中进行scp?

    在Python中scp文件的最pythonic方式是什么?我知道的唯一路线是 os.system('scp "%s" "%s:%s"' % (localfile ...

  8. PyCharm配置SSH和SFTP连接远程服务器

    文章目录 简介 安装 初试 TODO:跳板机 遇到的坑 参考文献 简介 SSH,Secure Shell,安全外壳协议,用于远程登录会话 SFTP,Secret File Transfer Proto ...

  9. python中doc=parased.getroot()_python实例手册.py

    python实例手册 #encoding:utf8 # 设定编码-支持中文 0 说明 手册制作: 雪松 littlepy www.51reboot.com 更新日期: 2016-01-21 欢迎系统运 ...

最新文章

  1. mysql修改数据库字符集,编码
  2. 软文的作用真的有那么神奇吗?
  3. 谷歌医疗AI再遭重挫!自宫头牌App,副总裁也已离职
  4. 用计算机a 3如何定义,计算机绘图A 3次.doc
  5. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password
  6. 公钥密码体制(RSA,椭圆曲线密码,ElGamal
  7. 输入记忆功能如何恢复
  8. 停车场计费算法 php,停车场收费算法,思路卡住了求补完!该如何处理
  9. 在阿里云 ECS 上配置 SSH
  10. if shell 条件语句简写_Shell if条件判断语句用法详解
  11. Google 推出免费利器,让编程小白也能开发游戏
  12. Python+Selenium开发工具安装及下载
  13. 修改Dreamweaver(DW) cs6代码背景为黑色
  14. 密码学基础知识(一)
  15. 【java小游戏】老虎杠子鸡游戏
  16. python使用“./“,“../“ ,“/“路径
  17. iOS创建沙盒账号的步骤和注意事项
  18. C#基础-飞行棋小游戏
  19. 纯Java文档阅读器(word、pdf等)
  20. 2021.11.16

热门文章

  1. 使用caffe自带模型训练cifar10数据集
  2. python - 基础算法题1- 使用while循环输入1 2 3 4 5 6 8 9 10
  3. 如何执行字符串的PHP代码
  4. javaSE基础——常见的dos命令即其他
  5. 《人生不设限》力克的生命故事
  6. CMD不能显示中文解决方案
  7. 8本前沿技术书,助力这届「青年人」将科幻变成现实
  8. Simulink之相控整流电路的组合
  9. FreeRTOS队列集
  10. 我的新书终于写完了。