Python中操控ssh和sftp
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相关推荐
- python mysql ssh隧道_在python中使用ssh隧道连接mysql
通常为了保证数据库安全,不会允许直接连接数据库,而是需要通过SSH隧道去连接服务器背后的数据库: 今天我在用Python连接远程的MySQL时,直连遇到了无法连接的情况,使用了SSH隧道之后解决了问题 ...
- [python] paramiko实现SSH和SFTP
目录 1.SSHClient 2.SSHClient 封装 Transport 3.基于公钥密钥连接 3.1 基于公钥密钥连接(SSHClient) 3.2 基于公钥密钥连接(SSHClient 封装 ...
- linux ssh和sftp区别,使用 SSH 和 SFTP 协议
导读 通过 SSH 和 SFTP 协议,我们能够访问其他设备,有效而且安全的传输文件等等. 几年前,我决定配置另外一台电脑,以便我能在工作时访问它来传输我所需要的文件.要做到这一点,最基本的一步是要求 ...
- python sftp模块_python实现ssh及sftp功能(实例代码)
1.在Linux上我们通过scp命令实现主机间的文件传送,通过ssh实现远程登录 ,比如 我们经常使用的xshell远程登录工具,就是基础ssh协议实现window主机远程登录Linux主机 下面简单 ...
- AutoDL算力租用++Pycharm中SSH、SFTP连接远程服务器
失踪人口回归,本次主要解决一下电脑无GPU或者GPU算力不够,但是需要进行神经网络训练的情况. 目录 前言 一.GPU租用 二.AutoDL算力租用 1.创建实例 2.SSH远程连接 三.Pychar ...
- 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 ...
- python实现scp功能_如何在Python中进行scp?
在Python中scp文件的最pythonic方式是什么?我知道的唯一路线是 os.system('scp "%s" "%s:%s"' % (localfile ...
- PyCharm配置SSH和SFTP连接远程服务器
文章目录 简介 安装 初试 TODO:跳板机 遇到的坑 参考文献 简介 SSH,Secure Shell,安全外壳协议,用于远程登录会话 SFTP,Secret File Transfer Proto ...
- python中doc=parased.getroot()_python实例手册.py
python实例手册 #encoding:utf8 # 设定编码-支持中文 0 说明 手册制作: 雪松 littlepy www.51reboot.com 更新日期: 2016-01-21 欢迎系统运 ...
最新文章
- mysql修改数据库字符集,编码
- 软文的作用真的有那么神奇吗?
- 谷歌医疗AI再遭重挫!自宫头牌App,副总裁也已离职
- 用计算机a 3如何定义,计算机绘图A 3次.doc
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password
- 公钥密码体制(RSA,椭圆曲线密码,ElGamal
- 输入记忆功能如何恢复
- 停车场计费算法 php,停车场收费算法,思路卡住了求补完!该如何处理
- 在阿里云 ECS 上配置 SSH
- if shell 条件语句简写_Shell if条件判断语句用法详解
- Google 推出免费利器,让编程小白也能开发游戏
- Python+Selenium开发工具安装及下载
- 修改Dreamweaver(DW) cs6代码背景为黑色
- 密码学基础知识(一)
- 【java小游戏】老虎杠子鸡游戏
- python使用“./“,“../“ ,“/“路径
- iOS创建沙盒账号的步骤和注意事项
- C#基础-飞行棋小游戏
- 纯Java文档阅读器(word、pdf等)
- 2021.11.16