スクリプトを引数形式に改造する[私的mydns.jpの更新スクリプト]

どっちが良いのかは、はっきりとはいえないですけど、思い立ったら改造してみるのは良いことです。

というわけで引数形式に変更してみます。

と言っても簡単で、冒頭でこうするだけですね。
シェルスクリプトはこういうところが簡単で好きです。

ID=$1
PW=$2

第1引数にID、第2引数にパスワードを受けています。

引数チェックをします。

if [ $# -ne 2 ];then
    echo usage $0 [ID] [pw]
    exit 1
fi

引数が足りない場合にはUSAGEを表示するのがルールです。こういうのは癖付けしておくと後で楽ですね。

ついでにコマンドライン実行時に確認するようにしてみました。

echo ready?
read HOGE

if [ "$HOGE" != "y" ] ;then
    echo No update...
    exit 1;
fi

ready?に対して y を入力すると続行する感じです。
これは、要らないかもしれないですけどね・・・。

 

というわけで、このようになりました。

#!/bin/sh

ID=$1
PW=$2

if [ $# -ne 2 ];then
    echo usage $0 [ID] [pw]
fi

echo ID $ID
echo PW $PW
echo ready?
read HOGE

if [ "$HOGE" != "y" ] ;then
    echo No update...
    exit 1;
fi

#変数定義
HTTP="http://"
IPV6=${HTTP}${ID}:${PW}@ipv6.mydns.jp/login.html
IPV4=${HTTP}${ID}:${PW}@ipv4.mydns.jp/login.html

echo get current IP...
NEW_IP=`curl ifconfig.co`
echo $NEW_IP

echo set ipv6...
wget -q -O `date +%Y%m%d_%H%M%S`_ipv6.txt $IPV6
if [ $? = 0 ] ; then
    sleep 3;
    echo set ipv4...
    wget -q -O `date +%Y%m%d_%H%M%S`_ipv4.txt $IPV4
    if [ $? = 0 ] ; then
        #更新
        echo [`date +%Y%m%d_%H%M%S`] update to $NEW_IP
    else
        echo error update ipv4.
    fi
else
    echo error update ipv6.
fi