我有以下内容,它是每5分钟运行一次的MySQL表查询的一部分。它循环查找所有IP并返回它们以及每个IP出现的次数,如果有超过30次,所有结果都会通过电子邮件发送给我。无论哪种方式,每次检查后清除表。这很好用。
我现在要添加的是,如果计数是> 100,它执行一个网址。但我需要将ip转换为服务器名称。
此网址是一个获取并在其他地方执行某些服务器端处理。 URL将如下:
https://api.xxxxx.com/?id=AA123&to=123456789&content=server1%20myapp%20restart
我不确定如何构建这个,我在下面的新代码部分尝试过,我需要在读取时再做一次,还是可以将其添加到现有代码中?我把" STUCK"我不确定如何引用该变量然后返回server1等。此外我想curl命令现在将包含在我的电子邮件中。
当前代码:
while read ip count; do
message=$message" -- $ip : $count -- "
done <<< "$result"
新代码:
192.168.50.10=server1
192.168.50.11=server2
192.168.50.12=server3
192.168.50.13=server4
while read ip count; do
message=$message" -- $ip : $count -- "
if [[ $count -gt 100 ]]; then
curl "https://api.xxxxx.com/?id=AA123&to=123456789&content="STUCK"%20myapp%20restart"
fi
done <<< "$result"
我已根据建议编辑,但我收到语法错误:重定向意外。
while read ip count; do
#variables
str1="https://api.xxxxx.com/?id=AA123&to=123456789&content="
str2="%20myapp%20start"
str3="$str1 $name $str2"
name=$(lookup () {
awk -v q="$1" '$1 == q { print $2; exit 0 }
END { exit 1 }' <<'________HERE'
192.168.50.10 server1
192.168.50.11 server2
192.168.50.12 server3
192.168.50.13 server4
________HERE
})
message=$message" -- $ip : $count -- "
if [[ $count -gt 100 ]]; then
echo $str3
fi