阅读时包含Bash以包含if

时间:2016-04-01 11:15:59

标签: bash

我有以下内容,它是每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

0 个答案:

没有答案