我有一个 ssh .sh bash 脚本文件,我正在 cron 上运行它来检查网站状态。bash 脚本(运行时)引用本地 txt 文件,其中包含要检查的网站列表,它们是关闭还是启动。有时网站会关闭一段时间(维护等),我不想一遍又一遍地收到有关此特定停机时间的通知。所以我试图弄清楚如何在 txt 文件中注释掉此网站的行项目。每次我在 txt 文件中此网站地址的左侧添加 //、# 或 ## 时,它都不会跳过它。它仍然会检测行项目,并每十分钟向我的手机和电子邮件发送一次通知,告知我网站已关闭。这只是一个标准的 .sh 脚本和标准的 .txt 文件。只需要知道如何注释掉 txt 文件中的项目。(不是 bash 脚本)
这是.sh 文件:
#!/bin/bash
# Mailgun API configuration
MAILGUN_API_KEY="redacted"
MAILGUN_DOMAIN="redacted"
TO_EMAIL="redacted"
FROM_EMAIL="redacted"
cd /redacted/redacted/uptime
# File containing website URLs
WEBSITE_FILE="premium-websites.txt"
while IFS= read -r website; do
response=$(curl -Is --max-time 10 "$website" | head -n 1)
response_code=$(echo "$response" | awk '{print $2}')
if [[ "$response_code" != "200" ]]; then
if [[ "$response_code" == "" ]]; then
# Website timed out, send email notification
subject="Website Timeout: $website"
body="The Premium Care website $website timed out. Please investigate. Sent from corp"
elif [[ "$response_code" == "500" ]]; then
# Website has a 500 error, send email notification
subject="Website 500 Error: $website"
body="The Premium Care $website returns a 500 Internal Server Error. Please investigate. Sent from corp"
else
# Website is down, send email notification
subject="Website Down: $website"
body="The Premium Care website $website is down. Please investigate. Sent from corp"
fi
curl -s --user "api:$MAILGUN_API_KEY" \
https://api.mailgun.net/v3/$MAILGUN_DOMAIN/messages \
-F from="$FROM_EMAIL" \
-F to="$TO_EMAIL" \
-F subject="$subject" \
-F text="$body"
echo "[$(date)] $website issue detected. Email notification sent."
else
echo "[$(date)] $website is up."
fi
done < "$WEBSITE_FILE"
在此处输入代码 在此处输入代码
这是文本文件(仅为示例):
https://websites1.com
https://websites2.com
https://websites3.com
一种可能的方法是获取站点列表的主版本。然后从此版本使用以下命令:
为当前运行创建特定文件。如果任何主机都没有停机,只需将主文件复制到当前运行文件即可。
您还可以更改脚本以过滤以以下内容开头的行
#
:并将最后一行改为