开发者社区> 问答> 正文

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

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

展开
收起
kun坤 2020-06-07 21:09:37 895 0
1 条回答
写回答
取消 提交回答
  • 1. 如果只是读取压缩包的文件名, 可以RPC的方式, 实际代码在server端执行, ”tar -tf“ 得到文件列表。2. 如果确实需要读取tar包所有文件,那下载到本地是省带宽的, 你远程解压后一个一个读不是更费带宽?

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

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

    ######恩 有道理哈,
    2020-06-07 21:09:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS块储存产品全面解析 立即下载