4

ウェブサイトをライブかどうかを監視し、メールアラートを送信するシェルスクリプトを作成しています。以下は私のコードです

#!/bin/bash
if [[ curl -s --head  --request GET http://opx.com/opx/version | grep "200 OK" > /dev/null] && [ curl -s --head --request GET http://oss.com/version | grep "200 OK" > /dev/null ]]
then echo "The HTTP server on opx.com and oss.com is up!" #> /dev/null
else
msg="The HTTP server  opx.com Or oss.com is down "
email="opx-noc@opx.com"

curl --data "body=$msg &to=$email &subject=$msg" https://opx.com/email/send
fi;

このコードを実行すると、

./Monitoring_Opx_Oss: line 2: conditional binary operator expected
./Monitoring_Opx_Oss: line 2: syntax error near `-s'
./Monitoring_Opx_Oss: line 2: `if [[ curl -s --head  --request GET http://opx.com/opx/version | grep "200 OK" > /dev/null] && [ curl -s --head --request GET http://oss.com/version | grep "200 OK" > /dev/null ]] '

私を修正してください...

4

1 に答える 1

7

これを変更します:

if [ $(curl -s --head  --request GET http://opx.opera.com/opx/version | grep "200 OK" > /dev/null) ] && [ $(curl -s --head --request GET http://oss.opera.com/version | grep "200 OK" > /dev/null) ]

内のコマンドのステータスを確認するには、次のifようにする必要があります

if [ $(command) ]

使っていた間に

if [ command]

の前後にスペースが必要なことにも注意してください[ ]if [_space_ command _space_ ]

アップデート

Ansgar Wiechers のコメントに基づいて、以下も使用できます。

if curl -s --head  --request GET http://opx.com/opx/version | grep "200 OK" > /dev/null && curl -s --head --request GET http://oss.com/version | grep "200 OK" > /dev/null;

あれは、

if command && command
于 2013-07-08T08:48:02.330 に答える