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对象数据的读写权限
Sep 12 Python
python2.7无法使用pip的解决方法(安装easy_install)
Apr 03 Python
python保存数据到本地文件的方法
Jun 23 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
对Python协程之异步同步的区别详解
Feb 19 Python
基于python if 判断选择结构的实例详解
May 06 Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 Python
python 利用pyttsx3文字转语音过程详解
Sep 25 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
python实现吃苹果小游戏
Mar 21 Python
Python制作一个仿QQ办公版的图形登录界面
Sep 22 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 07 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 strncasecmp字符串比较的小技巧
2011/01/04 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
python基于twisted框架编写简单聊天室
2018/01/02 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
Python简易版图书管理系统
2019/08/12 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
Numpy之reshape()使用详解
2019/12/26 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
铭立家具面试题
2012/12/06 面试题
人事任命书范文
2014/06/04 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技