Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LinuxBash迭代apache访问日志文件并发送邮件_Linux_Bash_Shell_Security_Sql Injection - Fatal编程技术网

LinuxBash迭代apache访问日志文件并发送邮件

LinuxBash迭代apache访问日志文件并发送邮件,linux,bash,shell,security,sql-injection,Linux,Bash,Shell,Security,Sql Injection,我需要一个LinuxBash脚本,如果apache日志中的搜索结果出现,它会给我发送一封电子邮件 我有一个非常简单的方法语句来研究SQL注入攻击,它只搜索SQLi中使用的一些关键字。这是: #tail -50000 /var/vhosts/site.com/logs/access_log | egrep -i "select%20|union%20|'|1=1" 所以现在我希望能够在每个网站的几个访问日志中启动它——我拥有的虚拟主机,并向我发送一封电子邮件,以防找到结果 以图解方式: 我有ap

我需要一个LinuxBash脚本,如果apache日志中的搜索结果出现,它会给我发送一封电子邮件

我有一个非常简单的方法语句来研究SQL注入攻击,它只搜索SQLi中使用的一些关键字。这是:

#tail -50000 /var/vhosts/site.com/logs/access_log | egrep -i "select%20|union%20|'|1=1"
所以现在我希望能够在每个网站的几个访问日志中启动它——我拥有的虚拟主机,并向我发送一封电子邮件,以防找到结果

以图解方式:

我有apache access_日志文件,每个虚拟主机一个:

/var/vhosts/website_1/access_log
/var/vhosts/website_2/access_log
etc...
我所说的bash过程的方案是:

for each access_log file (one by virtual host)
    result = tail -50000 /var/www/vhosts/site.com/logs/access_log | egrep -i "select%20|union%20|'|1=1"
    if any line appear in the result then
        send mail(myemail@site.com, 'Warning!: Possible attack in virtual_host_i')
end;
有人知道如何实现这个脚本吗


提前感谢

您有一个很好的计划,只需编写代码即可。 试试这个:

#!/bin/bash
for file in $(ls /var/vhosts/*/access_log);  do 
  result=""   #reset the result variable
  result=$(tail -50000 "${file}" | egrep -i "(select )|(union )|'|(1=1)")
  if [[ ! -z $result ]]; then
    echo "file ${file} contains suspicious lines:"
    echo $result
    # or enter your command for mailing the result
    # for example:
    # echo ${result} | mail -s ${file} youremail@site.com
    # check man page for your mail command!
  fi
done

将鼠标悬停在批处理文件标记上。我已将批处理文件标记替换为bash和shell标记。我不能确定您是否在使用bash shell,因此您可能希望用您选择的shell替换bash标记。很抱歉,我弄错了术语,无论如何,我认为这个问题是相关的,并且是适当的。谢谢。一个经过测试的有效答案怎么了?我不明白。如果能对否决票做一点解释,我将不胜感激。没错,我同意无论谁投了反对票,都应该对此做出澄清,这有助于改善谁做错了什么。这是这里常见的不良行为。但至少,我的投票你已经有了,非常感谢你的帮助。我想看看你是否可以添加脚本,发送带有“回声”显示数据的警报电子邮件。谢谢。关于发送电子邮件-它与bash或此脚本无关,这取决于您已安装或计划安装的内容。但是变量$file和$result中有重要的数据,可以将它们作为参数传递给发送命令myemail@site.com在评论行中,它发送电子邮件,但带有空的mesasge正文。。。有什么想法吗?