我经常登录一系列服务器,以便在日志中查找内容 我想通过脚本自动化这个,以使它更容易 所以我的问题是哪种方法最有效和最合理? 做
my @data = `ssh host grep pattern logfile`
或者在本地下载文件(scp文件)并在本地执行grep?
答案 0 :(得分:5)
这取决于
grep
过滤器scp
如果您以后不需要该文件,并且如果远程grep
不是问题,那么在通过网络发送数据之前减少数据(这通常是瓶颈)是最有益的当时。
为了进一步减少旅行数据,您甚至可以执行类似
的操作my @data = `ssh host 'grep pattern logfile | gzip' | gunzip`
对于您的目的,这应该与
大致相同my @data = `ssh -C host 'grep pattern logfile'`
虽然我从未尝试过这个。
顺便说一句,你说你使用了egrep
,这很好,但我从不厌倦提醒人们grep
将点解释为通配符,因此fgrep
(或{{1}应该用于固定字符串。
答案 1 :(得分:0)
grep
赢了"自动" :它必须由某个地方的计算机执行。
显而易见的答案是,最好远程执行此操作,因为这种方式(可能)必须通过网络返回较少的数据行。也就是说,除非远程机器非常慢,否则网络不需要的数据要比过滤它更快。
为什么不对它进行基准测试以比较这两个选项?并且不要开始优化,直到你的东西运转良好。
答案 2 :(得分:0)
如果您使用java,则只需使用grep4j库,否则如果您想要图形化的东西,可以使用SSearcH Everywhere