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标准库内置函数complex介绍
Nov 25 Python
Python的randrange()方法使用教程
May 15 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
Apr 17 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
Python登录注册验证功能实现
Jun 18 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
Python字符串hashlib加密模块使用案例
Mar 10 Python
python 模块导入问题汇总
Feb 01 Python
django使用多个数据库的方法实例
Mar 04 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获取表单中多个同名input元素的值
2014/03/20 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Python更换pip源方法过程解析
2020/05/19 Python
Python如何输出整数
2020/06/07 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
生物技术专业研究生自荐信
2013/09/22 职场文书
医学求职信
2014/05/28 职场文书
个人授权委托书
2014/09/15 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
庆祝国庆节标语
2014/10/09 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
宣传部部长竞选稿
2015/11/21 职场文书