Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 当两个参数相似达5分钟时,如何制作执行命令的脚本?_Linux_Bash_Curl_Sh - Fatal编程技术网

Linux 当两个参数相似达5分钟时,如何制作执行命令的脚本?

Linux 当两个参数相似达5分钟时,如何制作执行命令的脚本?,linux,bash,curl,sh,Linux,Bash,Curl,Sh,我使用cURL从一个网站获取一些数据,那么如果这个网站的两个参数在5分钟内相同,如何执行一个命令呢 #!/bin/bash TIME= "300s" abc=`$CURL *** abcd=`$CURL *** echo $abc echo $abcd if [ [ [ "$abc" -eq "eee" || "$abc" -eq "rrr" ] || [ "$abcd" -eq "eee" || "$abcd" -eq "rrr" ] ] -ge [ "$TIME" ] ] th

我使用cURL从一个网站获取一些数据,那么如果这个网站的两个参数在5分钟内相同,如何执行一个命令呢

#!/bin/bash

TIME= "300s"

abc=`$CURL ***
abcd=`$CURL *** 

echo $abc
echo $abcd 

if [ [ [ "$abc" -eq "eee" || "$abc" -eq "rrr" ] || [ "$abcd" -eq "eee" || "$abcd" -eq "rrr" ] ] -ge [ "$TIME" ] ] 
then
  echo "Critical hosts: "$abc
  echo "Critical service: "$abcd
fi

因此,如果
$abc
$abcd
==“eee”
==“rrr”
持续5分钟,则执行脚本框架下方的命令。

。您必须自己实现
mycurl\u函数
,但我建议调用curl函数一次,并解析
服务器
服务
的数据。为每个变量调用一次会带来大量开销,这会导致循环时间不到5分钟(现在还没有)。如果您真的、真的、真的希望它正好是5分钟,请使用Python;-)

脚本每秒验证
服务器
服务
的内容是否更改。如果其中任何一个与预期不同,循环将中断,脚本将回显
“数据已更改”
。否则,它将回显“数据保持不变”

#! /bin/bash

function my_curl_function {
    echo "Implement me!"
}

MYTIME=300

SERVER_EXPECTED=$(my_curl_function)
SERVICE_EXPECTED=$(my_curl_function)
SERVER=""
SERVICE=""

CHANGED=0

for ((x=0; x<MYTIME;x++)); do

    SERVER=$(my_curl_function)
    SERVICE=$(my_curl_function)

    if [ "${SERVER_EXPECTED}" != "${SERVER}" ] || [ "${SERVICE_EXPECTED}" != "${SERVICE}" ]; then
        CHANGED=1
        break
    fi
    echo -ne "\rSeconds waiting: $x"
    sleep 1
done
echo

if [ ${CHANGED} -eq 1 ]; then
    echo "Data is changed"
    exit 0
else
    echo "Data remains unchanged"
    exit 1
fi
#/bin/bash
函数my_curl_函数{
回声“实现我!”
}
MYTIME=300
服务器\u预期=$(my\u curl\u函数)
服务\u预期=$(my\u curl\u函数)
SERVER=“”
SERVICE=“”
已更改=0

为了((x=0;x脚本大部分已损坏;无法执行。请修复它。另请参阅和。简单:1/用自然语言描述您想要的内容。确保它是详尽无冗余的。2/使用伪代码描述您想要如何执行此操作,首先在高层,然后在较低层,直到每一行在shell脚本中看起来都很容易翻译。以及y然后3/编写并测试脚本。您已经跳过了前两个步骤,因此我不会浪费时间调试一个没有明显结构以满足非详细需求的脚本。它们多久会更改一次?如果它们可以每秒更改一次,并且您每分钟只检查一次,持续5分钟,您很容易相信它们保持不变事实上,它们之间的差异很大。您可以在Bash中修复一个严格的5分钟计时,但您将有时间执行curl命令并解析数据。如果需要N分钟,则必须添加
((x=x+N))
在循环的底部。@Serge Ballesta这里的脚本不是完整的,我只是把最低限度放在这里,以了解我想做什么