用python如何实现远程服务器tar.gz压缩包内文件的读取?:报错 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

用python如何实现远程服务器tar.gz压缩包内文件的读取?:报错

kun坤 2020-06-07 21:09:37 102

单位有N台linux工控机,系统为linux,开通了ssh,工控机中产生的日志是用tar进行打包的,目前想读取tar打包中的对应文件,我看了python的第三方库,paramiko这个库能否实现远程的SSH连接、文件上传、下载、外部命令的执行,但是好像还是无法实现远程tar包文件的读取。想实现tar包内文件读取的库基本上只能实现本地读取,无法实现远程读取。
有人建议我先远程下载以后本地读取tar包内文件,但是我觉得这样的话网络带宽占用比较大,而且效率不高。
大家有没有什么好的解决办法呢?

Linux 网络安全 Python
分享到
取消 提交回答
全部回答(1)
  • kun坤
    2020-06-07 21:09:41

    1. 如果只是读取压缩包的文件名, 可以RPC的方式, 实际代码在server端执行, ”tar -tf“ 得到文件列表。2. 如果确实需要读取tar包所有文件,那下载到本地是省带宽的, 你远程解压后一个一个读不是更费带宽?

    ######那就采用RPC的方式, 实际解压在server端进行, client端只需要传递你要找的文件名,然后把这几个文件直接或重新压缩回传,这样client端也可以做多线程。把tar包不完全解压就直接拿出里面的文件是做不到的。######这个tar包里面有20-30个文件,我只需要读取其中的4-5个,如果工控机的数量是150台,采用多进程方式下载150台工控机中的tar文件的这带宽估计占用不小,如果不用多进程方式,单线程进行读取那150多台设备估计下载到本地然后再读取可能会很慢。######码######

    如果日志不大,可以用paramio远程登录,解压,然后执行cat xxx打印出日志内容,然后通过正则从输出结果取得日志内容。如果日志文件比较大,那还是下载吧。如果工控机里的程序是自己的,那也可以换个思路,写个日志服务,工控机写的日志直接汇到日志服务里,这样就不用那么麻烦了

    ######恩 有道理哈,
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程