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之重回函数
Oct 10 Python
Python中实现从目录中过滤出指定文件类型的文件
Feb 02 Python
Python中的迭代器与生成器高级用法解析
Jun 28 Python
Python连接DB2数据库
Aug 27 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
pandas表连接 索引上的合并方法
Jun 08 Python
numpy中loadtxt 的用法详解
Aug 03 Python
详解python播放音频的三种方法
Sep 23 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
Python使用docx模块实现刷题功能代码
Feb 13 Python
Django DRF认证组件流程实现原理详解
Aug 17 Python
Python字符串格式化方式
Apr 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
反射调用private方法实践(php、java)
2015/12/21 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
实习教师个人的自我评价
2013/11/08 职场文书
爱耳日活动总结
2014/04/30 职场文书
面试复试通知单
2015/04/24 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL