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

我不明白 发布于 2017/11/30 09:05
阅读 626
收藏 0

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

加载中
0
xiaoaiwhc1
xiaoaiwhc1

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

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

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

我不明白
我不明白
恩 有道理哈,
返回顶部
顶部