单位有N台linux工控机,系统为linux,开通了ssh,工控机中产生的日志是用tar进行打包的,目前想读取tar打包中的对应文件,我看了python的第三方库,paramiko这个库能否实现远程的SSH连接、文件上传、下载、外部命令的执行,但是好像还是无法实现远程tar包文件的读取。想实现tar包内文件读取的库基本上只能实现本地读取,无法实现远程读取。
有人建议我先远程下载以后本地读取tar包内文件,但是我觉得这样的话网络带宽占用比较大,而且效率不高。
大家有没有什么好的解决办法呢?
单位有N台linux工控机,系统为linux,开通了ssh,工控机中产生的日志是用tar进行打包的,目前想读取tar打包中的对应文件,我看了python的第三方库,paramiko这个库能否实现远程的SSH连接、文件上传、下载、外部命令的执行,但是好像还是无法实现远程tar包文件的读取。想实现tar包内文件读取的库基本上只能实现本地读取,无法实现远程读取。
有人建议我先远程下载以后本地读取tar包内文件,但是我觉得这样的话网络带宽占用比较大,而且效率不高。
大家有没有什么好的解决办法呢?
在 Linux 主机上,你可以使用以下命令查看 tar 包内的内容。
1. file.tar.gz
gzip -dc file.tar.gz | tar tvf -
2. file.tar.bz2
bzip2 -dc file.tar.bz2 |tar tvf -
3. file.tar
tar tvf file.tar
而上面的这些命令,你可以使用 Python 的 os.system(cmd)
来执行并获得输出内容。
那么基于以上的事实,我建议你可以使用 flask 架构,做一个 web 页面来展示你所需要的内容。
基于 flask 架构,你也可以做成 restful 形式的 api。
1 回答9.5k 阅读✓ 已解决
2 回答5.1k 阅读✓ 已解决
2 回答3.5k 阅读✓ 已解决
3 回答4.4k 阅读
2 回答2.4k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
我觉得没有办法。
软件运行于本地,文件在远端。有些文件还能只先读一部分把目录给弄过来 提高效率。这点办不到的话,文件总归要传输到本地处理的,只不过是走什么协议来传输而已。再好一点儿,就是边传输边解压。
另外,你要是只读取远程压缩包里一小部分,就算实现了还说的过去,如果你还是要读取大部分内容。那你让它在远端解压再传过来,岂不更浪费带宽?
所以别想了,老老实实选择一个快速但占资源的 或者 限速不太占资源但慢了一些的方案。