我想让SSH调试信息与其他输入保持分离(并记录)。但是,如果我只是stderr重定向到一个日志文件,我的风险来自远程进程在主机上结合从SSH和输出输出(即可能送东西到stderr):从Awk中读取stderr
$ ssh -v somemachine 2> file.log
所以,我想只筛选出那些匹配“debug1”的行:
$ ssh -v somemachine | awk '/debug1/ {print > "file.log"; next} {print}'
不错,到目前为止,但ssh的调试输出转到stderr。所以...
$ ssh -v somemachine 2>& | awk '/debug1/ {print > "file.log"; next} {print}'
再次挫伤!我不想混合stdout和stderr。坏!
像我这样的孩子做什么?我正要走命名管道的路线或一些这样的野性,但是真的,我只需要知道如何让awk匹配来自stderr的模式。
由您介绍/ DEBUG1 /插入管道的地步,你已经走出的管道模型所期待的。有没有理由不能在远程会话上记录stderr? – msw 2010-03-24 14:39:15
请注意,awk只读取命名文件或标准输入;它不读stderr。所以,你必须安排它读取的是'ssh'stderr输出。 – 2010-03-24 14:52:34
我只想从ssh本身记录stderr消息,并仍然允许看到其他stderr消息。我将用ssh远程运行一个命令: $ ssh -v somemachine somecommand – Dave 2010-03-24 15:34:24