【问题标题】:check port status and the send email检查端口状态和发送电子邮件
【发布时间】:2015-08-24 08:07:58
【问题描述】:

我有一个 shell 脚本每分钟检查一次端口状态。如果端口状态为关闭,则会发送电子邮件。但这将每分钟发送一次电子邮件,直到端口再次启动。但我想在发送第一封邮件 30 分钟后发送电子邮件。我怎样才能做到这一点?我从 shell 脚本调用 PHP 文件来发送邮件。

nc -v -z -w 10 192.168.50.34 5038;

output=$?
# echo $output
php=`which php`

dt=`date`;


$php send_ast_status.php $output $dt


if [ $output == "0" ];
then 

#   echo 'asterisk is running'
    /etc/init.d/asterisk 'stop'

else 
#       echo 'asterisk not running'
      /etc/init.d/asterisk 'start'

fi

【问题讨论】:

  • 将上次电子邮件发送时间存储在数据库中/存档?
  • 您需要将上次检查的状态保存在某处,数据库或简单文件中。只有有了这些信息,您才能确定是否发生了变化。
  • 例如使用 sendmail 文件将时间戳放入其中,然后检查它
  • 显示你的脚本有帮助,edit你的问题..你尝试了什么,代码的哪一部分不起作用?
  • nc -v -z -w 10 192.168.50.34 5038;输出=$? # echo $output php=which php dt=date; $php send_ast_status.php $output $dt if [ $output == "0" ]; then # echo 'asterisk is running' /etc/init.d/asterisk 'stop' else # echo 'asterisk not running' /etc/init.d/asterisk 'start' fi

标签: php shell email


【解决方案1】:

键入以下命令:telnet example.com 25 查看结果:

如果端口 25 未被阻塞,您将获得成功的 220 响应(文本可能会有所不同)。

正在尝试 64.13.192.208... 已连接到 example.com。

转义字符是'^]'。 220 cl34.gs01.gridserver.com ESMTP Exim 4.63 2008 年 6 月 24 日星期二 13:45:04 -0700

如果端口 25 被阻塞,您将收到连接错误或根本没有响应。

正在尝试 64.13.192.208... telnet:连接到地址 64.13.192.208:连接被拒绝 telnet:无法连接到远程主机

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 2022-12-10
    • 2011-10-19
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    相关资源
    最近更新 更多