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的Django框架中的项目进行单元测试的方法
Apr 11 Python
深入理解python中的闭包和装饰器
Jun 12 Python
深入理解Python中变量赋值的问题
Jan 12 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
Python正则表达式匹配日期与时间的方法
Jul 07 Python
python实现windows倒计时锁屏功能
Jul 30 Python
flask框架自定义url转换器操作详解
Jan 25 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
PyTorch安装与基本使用详解
Aug 31 Python
Python 数据分析之逐块读取文本的实现
Dec 14 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设计模式 Prototype (原型模式)代码
2011/06/26 PHP
PHP编码转换
2012/11/05 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
php将html转为图片的实现方法
2017/05/19 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
Django小白教程之Django用户注册与登录
2016/04/22 Python
python实现发送邮件功能
2017/07/22 Python
python虚拟环境的安装配置图文教程
2017/10/20 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
python变量的存储原理详解
2019/07/10 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
python中的unittest框架实例详解
2021/02/05 Python
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
英国团购网站:Groupon英国
2017/11/28 全球购物
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
通信工程毕业生求职信
2013/11/16 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
品酒会策划方案
2014/05/26 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
netty 实现tomcat的示例代码
2022/06/05 Servers
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python