我正在编写一个Python脚本来解析不同主机上的各种日志。
我可以通过Python的子流程模块成功地运行bash脚本,但是,我想尽量减少ssh调用的数量,所以我试图将ssh、grep和find组合成一个命令。
当某些主机可能没有任何日志文件时,问题就开始了。我的命令是这样的:
ssh SOME_HOST 'grep "SOME_VALUE" $(find SOME_PATH -type f -name "*.log")'
当没有日志文件时,这将变成
grep "SOME_VALUE"
并且永远挂着。我试着用双引号把它括起来,这样它就变成了
grep "SOME_VALUE" ""
相反
ssh SOME_HOST 'grep "SOME_VALUE" "$(find SOME_PATH -type f -name "*.log")"'
现在我遇到了完全相反的问题:当发现一些日志时,我会得到:
grep: FILE_A^JFILE_B^J... : No such file or directory
我已经被这个问题困扰了几天,谷歌/RTFMing并没有起到多大帮助。我试过了
tr
用空格替换换行符,但出现了一些其他奇怪的错误:(有没有一种简单的方法可以在一个命令中做到这一点?)?