0

我正在执行一项任务,我需要远程连接到我公司的 UNIX 机器并解析出一组特定的日志条目。我已经找到了一种使用 Grep 和 -C 标志的方法,但是安装在这些机器上的 UNIX 版本不支持该功能。我考虑过的一种替代方法是通过 Cygwin 在我的本地计算机上完成工作,并使用本地版本的 Grep 来处理此任务。但是,这些日志特别大,超过 50 兆字节,并且与盒子的连接非常慢,因此需要几个小时才能完成下载。

我的主要问题是,是否可以通过 SSH 远程连接到远程服务器,但能够调用某些程序的本地安装版本?例如,如果我通过 SSH 连接到服务器,是否可以使用本地版本的 Grep 而不是远程系统的 Grep 版本?

我尝试过使用 Awk 和 Sed 做类似的事情,但没有取得太大的成功。在这一点上,除了长时间的下载之外,我不确定我还有什么其他选择。有什么建议吗?提前致谢。:)

4

1 回答 1

2

即使您可以将远程文件与本地应用程序一起使用,您仍然会下载整个日志文件 - ssh 允许输出/输入在框之间传递,但您实际上并没有在本地机器上运行本地 grep - 它将是远程机器将其文件发送到您的本地 grep。

一种替代方法是在通过 ssh 发送日志文件之前对其进行 gzip 压缩,例如

ssh user@remotebox 'gzip -9 - logfile'|gzcat -|grep whatever

您仍然会发送整个日志文件,但日志文件往往压缩得非常好,因此您只会发送原始数据的一小部分(例如,几兆与 50 未压缩)。

或者,您可以尝试在远程机器上从源代码编译 gnu grep,假设这些机器上有适当的编译器工具链。

于 2012-08-21T20:24:34.593 回答