外部 IP が変更されたらメールを送信する

外部 IP が変更されたらメールを送信する

サーバー用の bash スクリプトを作成しようとしています。このスクリプトは、curl を実行してボックスの最新の IP アドレスを取得し、それがファイルに保存されている古い IP アドレスと異なる場合は電子メールで通知します。

これが今私が持っているものです:

#!/bin/bash
#if ip address changes do
x=$(curl -4 "icanhazip.com")
y=$(cat ./oldIP.txt )
if [ "$x"!="$y" ];
    then
    echo "Current IP Address is $x"
    echo "Previous IP address is $y"
#   y=$x
elif [ "$x"="$y"]
    then
    echo "The IP addresses are the same"
fi
#send email to me

if; then; else;も使用してみましたが、IP アドレスが同じ場合にスクリプトを異なる方法で反応させることはできません。

この問題は の変数宣言に起因していると思います$y

答え1

テスト括弧 [ ] 内のオペランド間にはスペースを残す必要があります。

#!/bin/bash
#if ip address changes do
x=$(curl -4 icanhazip.com )
y=$(cat ./oldIP.txt )
if [ "$x" != "$y" ]
    then
    echo "Current IP Address is $x"
    echo "Previous IP address is $y"
#   y=$x
else
    echo "The IP addresses are the same"
fi
#send email to me

関連情報