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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
Python实现简单状态框架的方法
Mar 19 Python
在Python的Django框架中创建和使用模版
Jul 15 Python
在Django的视图中使用form对象的方法
Jul 18 Python
Python3实现购物车功能
Apr 18 Python
TensorFlow实现卷积神经网络
May 24 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
Python基于内置库pytesseract实现图片验证码识别功能
Feb 24 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
Oct 15 Python
python 遍历磁盘目录的三种方法
Apr 02 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与XML的PDF文档生成技术
2006/10/09 PHP
社区(php&&mysql)六
2006/10/09 PHP
PHP 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
关于Python作用域自学总结
2019/06/10 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
应届生服务员求职信
2013/10/31 职场文书
经典婚礼主持词
2014/03/13 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
外联部演讲稿
2014/05/24 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server