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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python验证码识别的方法
Jul 10 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
Oct 29 Python
python读取图片任意范围区域
Jan 23 Python
基于python的列表list和集合set操作
Nov 24 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
Django Model中字段(field)的各种选项说明
May 19 Python
pandas DataFrame运算的实现
Jun 14 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
Nov 06 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将session信息存储到数据库的类实例
2015/03/04 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
Python序列化基础知识(json/pickle)
2017/10/19 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
python set内置函数的具体使用
2019/07/02 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
Python实现搜索算法的实例代码
2020/01/02 Python
Django xadmin安装及使用详解
2020/10/26 Python
python 递归相关知识总结
2021/03/03 Python
面向对象编程的优势是什么
2015/12/17 面试题
大学应届生的自我评价
2014/03/06 职场文书
投资合作协议书范本
2014/04/17 职场文书
爱国主义演讲稿
2014/05/07 职场文书
中文专业自荐书
2014/06/29 职场文书
建筑安全责任书范本
2014/07/24 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
2015年教师节感言
2015/08/03 职场文书
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python