单位有N台linux工控机,系统为linux,开通了ssh,工控机中产生的日志是用tar进行打包的,目前想读取tar打包中的对应文件,我看了python的第三方库,paramiko这个库能否实现远程的SSH连接、文件上传、下载、外部命令的执行,但是好像还是无法实现远程tar包文件的读取。想实现tar包内文件读取的库基本上只能实现本地读取,无法实现远程读取。
有人建议我先远程下载以后本地读取tar包内文件,但是我觉得这样的话网络带宽占用比较大,而且效率不高。
大家有没有什么好的解决办法呢?
1. 如果只是读取压缩包的文件名, 可以RPC的方式, 实际代码在server端执行, ”tar -tf“ 得到文件列表。2. 如果确实需要读取tar包所有文件,那下载到本地是省带宽的, 你远程解压后一个一个读不是更费带宽?
######那就采用RPC的方式, 实际解压在server端进行, client端只需要传递你要找的文件名,然后把这几个文件直接或重新压缩回传,这样client端也可以做多线程。把tar包不完全解压就直接拿出里面的文件是做不到的。######这个tar包里面有20-30个文件,我只需要读取其中的4-5个,如果工控机的数量是150台,采用多进程方式下载150台工控机中的tar文件的这带宽估计占用不小,如果不用多进程方式,单线程进行读取那150多台设备估计下载到本地然后再读取可能会很慢。######码######如果日志不大,可以用paramio远程登录,解压,然后执行cat xxx打印出日志内容,然后通过正则从输出结果取得日志内容。如果日志文件比较大,那还是下载吧。如果工控机里的程序是自己的,那也可以换个思路,写个日志服务,工控机写的日志直接汇到日志服务里,这样就不用那么麻烦了
######恩 有道理哈,版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。