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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
在Python中使用sort()方法进行排序的简单教程
May 21 Python
Django入门使用示例
Dec 12 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
python实现图像外边界跟踪操作
Jul 13 Python
Numpy中np.max的用法及np.maximum区别
Nov 27 Python
用Python制作灯光秀短视频的思路详解
Apr 13 Python
python爬取新闻门户网站的示例
Apr 25 Python
tensorflow中的数据类型dtype用法说明
May 26 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个人网站架设连环讲(一)
2006/10/09 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
php 数组元素快速去重
2017/05/05 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
js中的面向对象入门
2017/03/06 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
Python3.x中自定义比较函数
2015/04/24 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Python图片的横坐标汉字实例
2019/12/04 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
泰国在线书店:SE-ED
2020/06/21 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
教师辞职报告范文
2014/01/20 职场文书
大班下学期个人总结
2015/02/13 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
HTML基本元素标签介绍
2022/02/28 HTML / CSS