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 相关文章推荐
开始着手第一个Django项目
Jul 15 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
python实现读取并显示图片的两种方法
Jan 13 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
使用python存储网页上的图片实例
May 22 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
Python实现的调用C语言函数功能简单实例
Mar 13 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
python3 Scrapy爬虫框架ip代理配置的方法
Jan 17 Python
基于python实现坦克大战游戏
Oct 27 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
js对象的复制继承实例
2015/01/10 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
微信小程序实现随机验证码功能
2018/12/20 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
详解Python中的条件判断语句
2015/05/14 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
python实现大文本文件分割
2019/07/22 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
关于是否需要写商业计划书
2014/02/07 职场文书
社会实践活动总结报告
2014/04/29 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android
golang实现浏览器导出excel文件功能
2022/03/25 Golang
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js