python实现ssh及sftp功能(实例代码)


Posted in Python onMarch 16, 2020

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

 下面简单的在python实现这几个功能   下面使用到paramiko模块,这个不是python的内置模块,我直接通过pycharm下载这个模块,

第一步实现一个简单的ssh登录命令 代码如下:

import paramiko
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#第一次登录的认证信息
# 连接服务器
ssh.connect(hostname='192.168.158.131', port=22, username='root', password='hadoop')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls /')
# 获取命令结果
res,err = stdout.read(),stderr.read()
result = res if res else err
print(result.decode())
# 关闭连接
ssh.close()

登录并能实现简单的命令发送 和接收指令结果 ,这里面的方法写死了 ,但总算连接成功了,应为开始虚拟机的在学习iptables加了许多规则,并且在ssh 的服务器端修改了默认端口一直

连不上,修改配置文件后设置允许远程主机远程连接  ,/etc/ssh/sshd_config文件中配置

然后实现模拟Linux的scp 命令上传下载文件  ,使用了paramiko的Transport  简单的测试代码如下

import paramiko
transport = paramiko.Transport(('192.168.158.131', 22))
transport.connect(username='root', password='hadoop')
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('fromlinux.txt', '/tmp/test_from_win')
# 将remove_path 下载到本地 local_path
# sftp.get('/root/oldgirl.txt', 'fromlinux.txt')

transport.close()

同样的也能 测试成功 ,能实现文件的上传与下载

最后注意到paramiko.RSAKey这个功能,能思想比较牛逼的ssh免密登录,核心的过程就是在Linux通过ssh-keygen在主机上生成一对密钥 ,公钥放在~/.ssh/authorized_keys文件在,将私钥拷贝到windows主机的环境目录下 ,

import paramiko
private_key = paramiko.RSAKey.from_private_key_file('id_rsa31.txt')#要将私钥放在这里
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.41', port=22, username='fang', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df;ifconfig')
result = stdout.read()
print(result.decode())
stdin, stdout2, stderr = ssh.exec_command('ifconfig')
# 获取命令结果
result2 = stdout2.read()
print(result2.decode())
# 关闭连接
ssh.close()

成功的实现了免密连接,代码知识做简单的测试用,以连接为主,没考虑其他的实际需要

这些东西玩了一下午,还是挺神奇的,

总结

到此这篇关于python实现ssh及sftp功能 的文章就介绍到这了,更多相关python实现ssh sftp 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用cookie库操保存cookie详解
Mar 03 Python
python中合并两个文本文件并按照姓名首字母排序的例子
Apr 25 Python
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
linux 下实现python多版本安装实践
Nov 18 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
Python实现字典按照value进行排序的方法分析
Dec 23 Python
python3爬取淘宝信息代码分析
Feb 10 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
Python3-异步进程回调函数(callback())介绍
May 02 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
如何在scrapy中集成selenium爬取网页的方法
Nov 18 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 #Python
Django ValuesQuerySet转json方式
Mar 16 #Python
Django 再谈一谈json序列化
Mar 16 #Python
django实现将后台model对象转换成json对象并传递给前端jquery
Mar 16 #Python
Python读写操作csv和excle文件代码实例
Mar 16 #Python
django模型动态修改参数,增加 filter 字段的方式
Mar 16 #Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 #Python
You might like
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php过滤敏感词的示例
2014/03/31 PHP
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python编程实现正则删除命令功能
2017/08/30 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
python tkinter基本属性详解
2019/09/16 Python
python实现简单银行管理系统
2019/10/25 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
django框架F&Q 聚合与分组操作示例
2019/12/12 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
python interpolate插值实例
2020/07/06 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
个人简历自我评价
2014/01/06 职场文书
五一手机促销方案
2014/03/08 职场文书
工作分析计划书
2014/04/30 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
领导干部失职检讨书
2015/05/05 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书