具有多个if语句的Bash脚本

时间:2016-11-14 21:44:56

标签: bash if-statement

所以我试图在大约100台服务器上设置电子邮件通知,我正在使用一个完美运行的if脚本,但是我有一个工具,每隔5分钟ssh进入每台机器收集统计信息。我正在尝试调整脚本以忽略来自1 IP的任何ssh尝试。我已经绞尽脑汁,我想我已经查看了关于这个问题的每一个可能的问题。任何帮助都会很棒,谢谢你们!

目前,无论ssh是谁,脚本都会发送电子邮件。

#!/bin/sh
# Change these two lines:
sender="fromtest@test.com"
recepient="test@test.com"

if [ "$PAM_RUSER" != "192.168.1.10" ]; then
goto done
next
 if [ "$PAM_TYPE" != "close_session" ]; then
  host="`hostname`"
  subject="SSH Login: $PAM_USER from $PAM_RHOST on $host"
  # Message to send, e.g. the current environment variables.
  message="`env`"
  echo "$message" | mail "$sender" -s "$subject" "$recepient"
 fi
fi

1 个答案:

答案 0 :(得分:2)

#!/bin/sh
# Change these two lines:
sender="fromtest@test.com"
recepient="test@test.com"

if [ "$PAM_RHOST" != "192.168.1.10" -a "$PAM_TYPE" != "close_session" ]; then
    host="`hostname`"
    subject="SSH Login: $PAM_USER from $PAM_RHOST on $host"
    # Message to send, e.g. the current environment variables.
    message="`env`"
    echo "$message" | mail "$sender" -s "$subject" "$recepient"
fi

如果if变量等于PAM_RHOST,此解决方案使用不同的条件跳过192.168.1.10的正文。我们使用-a(和)来指定必须满足两个条件。