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 相关文章推荐
django1.8使用表单上传文件的实现方法
Nov 04 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
VSCode下好用的Python插件及配置
Apr 06 Python
python随机取list中的元素方法
Apr 08 Python
Python实现决策树C4.5算法的示例
May 30 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
python 爬虫百度地图的信息界面的实现方法
Oct 27 Python
flask实现验证码并验证功能
Dec 05 Python
Python3之外部文件调用Django程序操作model等文件实现方式
Apr 07 Python
大数据分析用java还是Python
Jul 06 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
python 获取剪切板内容的两种方法
Nov 28 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读取大文件末尾N行的高效方法推荐
2016/06/03 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
Python实现的石头剪子布代码分享
2014/08/22 Python
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
pandas 时间格式转换的实现
2019/07/06 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
如果Session Bean得Remove方法一直都不被调用会怎么样
2012/07/14 面试题
会计专业的自荐信
2013/12/12 职场文书
教师业务学习材料
2014/12/16 职场文书
Python自动化爬取天眼查数据的实现
2021/06/15 Python