怎么通过Python实现linux远程登陆及sftp
发布时间 - 2023-05-11 00:00:00 点击率:次1. 使用shell命令
$ sshpass -p ${passwd} ssh -p ${port} -l ${user} -o StrictHostKeyChecking=no xx.xx.xx.xx "ls -l"然后你会发现,你的输出有很多你并不需要,但是又不去不掉的一些信息。
对于shell 命令,可以直接使用管道,或者将标准输出重定向到文件的方法取得执行结果。
2. 使用 subprocess
通过Python可以想到使用 os.popen,os.system,commands,subprocess 等一些命令执行库来间接获取系统信息 。这些库获取的 output 不仅有标准输出,还包含标准错误信息。所以每次都要对 output 进行数据清理,然后整理格式化,才能得到我们想要的数据。
import subprocess
ssh_cmd = "sshpass -p ${passwd} ssh -p 22 -l root -o StrictHostKeyChecking=no xx.xx.xx.xx 'ls -l'"
status, output = subprocess.getstatusoutput(ssh_cmd)
# 数据清理总之,间接使用ssh命令的几个问题:
需要额外安装 sshpass(如果不免密的话)
干扰信息太多,数据清理、格式化相当麻烦
代码实现不够优雅,可读性太差
ssh 连接不能复用,一次连接仅能执行一次命令
代码无法全平台,仅能在 Linux 和 OSX 上使用
3. 使用Paramiko
安装
python3 -m pip install
方法1:基于用户名和密码的 sshclient 方式登录
该方法无法复用ssh连接。
import paramiko
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 建立连接
ssh.connect("xx.xx.xx.xx", username="root", port=22, password="you_password")
# 使用这个连接执行命令
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("ls -l")
# 获取输出
print(ssh_stdout.read())
# 关闭连接
ssh.close()方法2:基于用户名和密码的 transport 方式登录
该方法可以复用连接。
import paramiko
# 建立连接
trans = paramiko.Transport(("xx.xx.xx.xx", 22))
trans.connect(username="root", password="you_passwd")
ssh = paramiko.SSHClient()
ssh._transport = trans
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("ls -l")
print(ssh_stdout.read())
# 关闭连接
trans.close()方法3:基于公钥的 SSHClient 方式登录
该方法无法复用ssh连接。
import paramiko
# 指定本地的RSA私钥文件
# 如果建立密钥对时设置了密码,password为passphrase。如果没有passphrase则无需指定password参数。
pkey = paramiko.RSAKey.from_private_key_file('/home/you_username/.ssh/id_rsa', password='12345')
# 建立连接
ssh = paramiko.SSHClient()
ssh.connect(hostname='xx.xx.xx.xx',
port=22,
username='you_username',
pkey=pkey)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls -l')
# 结果放到stdout中,如果有错误将放到stderr中
print(stdout.read())
# 关闭连接
ssh.close()方法4:基于公钥的 Transport 方式登录
该方法可以复用连接。
import paramiko
# 指定本地的RSA私钥文件
# 如果建立密钥对时设置了密码,password为passphrase。如果没有passphrase则无需指定password参数。
pkey = paramiko.RSAKey.from_private_key_file('/home/you_username/.ssh/id_rsa', password='12345')
# 建立连接
trans = paramiko.Transport(('xx.xx.xx.xx', 22))
trans.connect(username='you_username', pkey=pkey)
ssh = paramiko.SSHClient()
ssh._transport = trans
# 执行命令,和传统方法一样
stdin, stdout, stderr = ssh.exec_command('df -hl')
print(stdout.read().decode())
# 关闭连接
trans.close()sft
p 文件传输
import paramiko
trans = paramiko.Transport(('xx.xx.xx.xx', 22))
# 建立连接
trans.connect(username='you_username', password='you_passwd')
# 实例化一个 sftp对象,指定连接的通道
sftp = paramiko.SFTPClient.from_transport(trans)
# 发送文件
sftp.put(localpath='/tmp/11.txt', remotepath='/tmp/22.txt')
# 下载文件
sftp.get(remotepath='/tmp/22.txt', localpath='/tmp/33.txt')
trans.close()
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在建站主机中优化服务器配置?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
iOS UIView常见属性方法小结
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Java遍历集合的三种方式
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何构建满足综合性能需求的优质建站方案?
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
如何生成腾讯云建站专用兑换码?
进行网站优化必须要坚持的四大原则
使用spring连接及操作mongodb3.0实例
java获取注册ip实例
Python自动化办公教程_ExcelWordPDF批量处理案例
html5的keygen标签为什么废弃_替代方案说明【解答】
中山网站推广排名,中山信息港登录入口?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何在腾讯云免费申请建站?
如何用腾讯建站主机快速创建免费网站?
简单实现jsp分页
Android利用动画实现背景逐渐变暗
Laravel如何实现数据库事务?(DB Facade示例)
在Oracle关闭情况下如何修改spfile的参数
北京专业网站制作设计师招聘,北京白云观官方网站?
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
英语简历制作免费网站推荐,如何将简历翻译成英文?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何快速搭建虚拟主机网站?新手必看指南
lovemo网页版地址 lovemo官网手机登录
JavaScript如何实现错误处理_try...catch如何捕获异常?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何用好域名打造高点击率的自主建站?
iOS验证手机号的正则表达式
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
javascript中闭包概念与用法深入理解
音响网站制作视频教程,隆霸音响官方网站?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
如何挑选最适合建站的高性能VPS主机?
如何在IIS服务器上快速部署高效网站?
Laravel如何优化应用性能?(缓存和优化命令)
SQL查询语句优化的实用方法总结


p 文件传输