我有一个文件夹bin / bash,其中我放了这个脚本:mal_test.sh
if grep 'php \$[a-zA-Z]*=.as.;' "$1" >/dev/null
then
"!!! $1 is malware!!!"
else
" $1 is fine."
fi
我从另一个目录运行以下命令:
find -type f -exec ./mal_test.sh '{}' ';'
但我收到错误查找:./mal_test
- 没有这样的文件或目录
我猜这个脚本被解释为一个文件......我该修复什么?
谢谢!
答案 0 :(得分:1)
有很多异常......
1)您在grep中使用扩展正则表达式。所以你应该使用 -E option
。
2)在您的find命令中,而不是引用 ';'
执行\;
3)由于您将脚本放在bin / bash目录中,请确保将该路径添加到PATH环境变量中。其他方法是提供脚本所在的整个路径。
4)echo
循环中没有if then else
个陈述。
5)在find命令中,您需要提供要查找文件的路径。使用.
作为当前目录。例如find . -type f -exec ./script.sh {} \;
我对您的脚本进行了以下更改(您可以添加自己的RegEx)。这就是我得到的 -
[jaypal~/Temp]$ cat script.sh
#!/bin/bash
if grep -E '[a-zA-Z]*' ${1} >/dev/null
then
echo "!!! $1 is malware!!!"
else
echo " $1 is fine."
fi
输出:
[jaypal~/Temp]$ find . -type f -exec ./script.sh {} \;
./.mp3 is fine.
./1 is fine.
!!! ./a.sh is malware!!!
!!! ./ab.sed is malware!!!
!!! ./b.sh is malware!!!
!!! ./backup/GTP_Identifier.sh is malware!!!
!!! ./backup/GTP_Parser.sh is malware!!!
!!! ./backup/split.pl is malware!!!
!!! ./backup/T20111017153052.NEW is malware!!!
!!! ./backup/T20111025172411.NEW is malware!!!
!!! ./backup/T20111107193400.NEW is malware!!!