【问题标题】:Unix Script ShellUnix 脚本外壳
【发布时间】:2014-04-16 23:12:26
【问题描述】:

谁能帮我写剧本

我正在尝试制作一个脚本外壳,如果这些文件中的任何一个已被修改并且脚本必须自动例程,则该脚本将向根用户发送警报/电子邮件,因此脚本必须始终运行

我开始尝试做一些事情,但我需要有人来纠正我或给我一些想法

#!/bin/bash

if [`find . -mtime -0` -eq date];then
    mail -s "modified files" root
    find  /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/sudoers /etc/hosts /etc/sysconfig/network /etc/resolv.conf /etc/bashrc /etc/fstab -type f -mtime -50
else
    mail -s "nothing" root
fi

【问题讨论】:

  • 我正在为学校作业做这个,我不允许安装任何程序,它必须是内置的,并且只能使用文件扩展名为 ./File.Sh 的终端跨度>
  • find /etc...-type f -mtime -50 的想法是什么?你打算邮寄它的输出吗?如果是这样,您应该将其发送到mail。否则它只会打印在标准输出上。
  • 你不能安装任何程序,但你可以让 Stack Overflow 为你做作业?有趣的规则。
  • @wooble 这是我尝试做的脚本,有人纠正了我,但没有这样做,是的,不允许安装任何程序
  • @wooble 但很高兴你能帮忙

标签: shell unix monitoring


【解决方案1】:

您可以将您的 if 语句放在一个循环中,该循环会在迭代之间休眠一段时间:

#!/bin/bash

while sleep 10; do
    # Your "if" goes here 
    # it will be executed with 10 second sleep between iterations.
    if [...]
       ...
    fi
done

【讨论】:

  • 我只想制作一个 shell 脚本,如果上面列出的任何文件已被修改,它将通过电子邮件发送给 root
  • 我正在为学校作业做这个,我不允许安装任何程序,它必须是内置的,并且只能使用文件扩展名为 ./File.Sh 的终端跨度>
  • 我有点困惑。您是否需要弄清楚如何使脚本定期执行检查?如果是这样,请参阅我上面的答案。 while 是 shell 关键字,sleep 是 shell 内置或标准实用程序,因此您无需安装任何东西。
  • 不要使用[ ... ]。这是deprecated syntax。 仅在[[ ... ]]不可用时使用[ ... ]或test <TEST>,例如使用dash而不是bash时。
  • 我理解您要解释的内容,但我不确定我所拥有的代码是否有效,我只需要有人纠正我或给我一个与我类似的答案,或者一个完整的将做我想做的事情的脚本
【解决方案2】:

这是脚本(a.sh)

#!/bin/bash

date=1
file=$(find . -mtime -${date})

if [  "${file}X" != "X" ]; then
  echo "$file" |mail -s "modified files" root
fi

把脚本放到cronjob中,比如每10分钟运行一次:

0,10,20,30,40,50 * * * * bash a.sh

cornjob 将持续监控文件更新状态,您无需在 while 循环中使用更多脚本来关心它。

【讨论】:

  • 使用a != b 比使用! a = b 更好。
【解决方案3】:

用资源指针补充具体答案:

使用bash开始的一些资源:

这里有两个有用的实验资源:

  • http://shellcheck.net 可以帮助您查找 shell 代码中的语法错误 - 虽然是一个很好的资源,但它无法检测代码中的所有问题,然而。但是,它会检测到您的 [ ... ] 条件存在一个问题。

  • http://explainshell.com 是一个很棒的网站,它基于man 页面解释给定的命令行;例如,这里是find . -mtime -0 的解释:http://explainshell.com/explain?cmd=find+.+-mtime+-0 - 注意底层的man 页面是Ubuntu 的,所以它们涵盖了GNU 实用程序,许多但不是所有的Unix 发行版都使用这些实用程序; GNU 实用程序通常具有一些有用但非标准的扩展,这些扩展在某些平台(例如 OSX)上可能不可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多