- 论坛徽章:
- 0
|
本帖最后由 7456hjy521 于 2012-11-30 09:44 编辑
各位大侠,我想写一个shell可以从本机上远程取其他多台机器的符合时间在t1~t2间的所有log,并重导入到本地一个新文件。
所以就写了下面4行:
(第四行的cat是想把 时间t1~t2间的log 重导入到一个新文件,cat traffic-1.log| awk -v a=$t1 -v b=$t2 '{if ($4>=a && $4<=b) {print}}' > traffic-1.log_$t1-$t2,单独在远程机器上运行时可以的)
#!/bin/bash
t1=8:41:27
t2=8:42:27
log_dir=/var/lib/servers/traffic-1/logs
ssh pl-1 "cd $log_dir;cat traffic-1.log| awk -v a=$t1 -v b=$t2 '{if ($4>=a && $4<=b) {print}}' > traffic-1.log_$t1-$t2"
traffic-1.log 里面的内容是类似这样的:
<Nov 26, 2012 8:40:26 PM CET> <INFO>
<Nov 26, 2012 8:41:27 PM CET> <Debug>
<Nov 26, 2012 8:41:28 PM CET> <Debug>
<Nov 26, 2012 8:41:28 PM CET> <Debug>
<Nov 26, 2012 8:41:28 PM CET> <INFO>
<Nov 26, 2012 8:42:01 PM CET> <INFO>
<Nov 26, 2012 8:43:01 PM CET> <INFO>
但是,在本机上运行这个脚本时候报错:
# ./logfilter.sh
awk: {if (>=a && <=b) {print}}
awk: ^ syntax error
是不是单引号,双引号的问题呢,怎么解决呢?跪求各位大虾指教啊!谢谢!
|
|