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 httplib,smtplib使用方法
Sep 06 Python
Python multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
django2 快速安装指南分享
Jan 05 Python
Window10+Python3.5安装opencv的教程推荐
Apr 02 Python
matplotlib 纵坐标轴显示数据值的实例
May 25 Python
Django中信号signals的简单使用方法
Jul 04 Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
python 等差数列末项计算方式
May 03 Python
Keras搭建自编码器操作
Jul 03 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
python实现kNN算法
2017/12/20 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
python asyncio 协程库的使用
2021/01/21 Python
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
幼儿园安全生产月活动总结
2014/07/05 职场文书
团队会宣传标语
2014/10/09 职场文书
县委务虚会发言材料
2014/10/20 职场文书