CentOS5か6の頃、WAN側のIPアドレスを正しく取得できなかったので、Windows版のDiCEを今も使っている。
4月中はほとんど入院していた。
その間、自宅のWindowsのPCは停止したままだった。
もし3か月も入院していたら、
そして真っ先にルータがリセットする様な事態が発生していたら、
ここのブログのDDNSのアカウントの自然消滅という非常に厄介なことになっていたハズである。
今はCentOS7になっているし、再びDiCEを試してみる。
DiCE for Linux のバージョンは当時のままだった。
でもとりあえずやってみる。
wgetでダウンロードしてみると、URLのとおり download.cgi?p=diced019 というファイルが出来上がる。
名前をdiced01913.tar.gz に変更し、/usr/local/bin から tar zxvf diced01913.tar.gz で解凍。
setarch `uname -m` /usr/local/bin/DiCE/diced と実行すると
/usr/local/bin/DiCE/diced: ファイルが存在しません と云う内容のメッセージが出る。
lsコマンドで調べると実際にはファイルは存在していた。
dicedを直接実行してみると
/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
と出てくる。
setarch が/lib/ld-linux.so.2の部分を省いて「diced」と「No such file or directory」を直結し、/usr/local/bin/DiCE/diced: ファイルが存在しません となったらしい。
別にsetarchだけではない。パッケージが足りない時は大抵のアプリは同じ様にトンチンカンなメッセージを吐き出すのだ。
そして/lib/ld-linux.so.2 は64bit版のOSで32bit版のアプリを動かすためのパッケージらしい。
だったら32bit版のLinuxでDiCEを動かせばいいはずだが・・・
※CentOS7から64bit版しか存在しないのだ。
yum install ld-linux.so.2 でライブラリィを追加して、再びsetarchで実行してみる。
※古いプログラムなのでTeraTermをEUCに変えないと文字化けする。
しかし、WAN側のIPアドレスを取得させてみると、ダンマリになってしまった。
多分、CentOS7で LANアダプターの名前がeh0 ではなく enp3s0 のようにランダムなものに変わったせいな気がする。
※通常のアプリからeth0などと指定することは滅多にないが、LAN関係のコマンドが吐き出すテキストをgrepやawkで欲しい部分だけ切り取ってくる場合には重要なキーワードだ。
今ではinet-ip.infoなどの外部のWEBサービスを使えば・・・
# curl inet-ip.info
xxx.yyy.zzz.www
と簡単に教えてもらえるが、当時は そういうサービスも無かったのかもしれない。
しかもdicedはバイナリーな実行プログラムだった。
当然ソースは無い。
と云う訳で、ここで投了。
rm -rf /usr/local/bin/DiCE
yum -y remove ld-linux.so.2
で、使っていないパッケージを消去。
今後もWindows版を使い続けるしかないようだ。
と思ってたら
利用しているDDNSのサイトに「Linux用のIPアドレス更新サンプルスクリプト(専用)」を発見。(気が付かなかった
ちゃんとWAN側のIPアドレスが得られるのでクローンに登録。
コレで解決。(完了!
と思ったけど 動かない
/var/log/cron を見ると
crond[638]: (*system*) RELOAD (/etc/cron.d/ddns)
crond[638]: (CRON) bad command (/etc/cron.d/ddns)
なぜだろう???
# crontab設定例(/usr/local/ddns/ddns.plにスクリプトを置き10分間隔で実行)
# 5,15,25,35,45,55 * * * * /usr/local/ddns/ddns-update.pl
のドコがおかしいのかな?
あ、crontabじゃなくて cron.d に置いたから
*/10 * * * * root /
とユーザ名を指定しないといけない。
※ */10は10分間隔で実行の指定。5,15,25,35,45,55とほぼ同じ。
というかcrontabは各ユーザごとのcron機能なのでユーザ名の設定は省かれている。
と思った方がよさそうだ。
/etc/cron.d/ddnsの最終形
# DDNS SHELL=/bin/bash PATH=/sbin:/ MAILTO=root */30 * * * * root /usr/local/ddns/ddns-update.plbin:/ usr/ sbin:/ usr/ bin
使用した先のddns-update.plは通常時は標準出力に何も書かないのでメールは飛んでこない(らしい
30分間隔にしたのは、もしメールが飛ぶような状況になったら10分間隔はちょっとマズいと思ったから。
そして、もしかしたらメールが飛んでくるかもと思い
待っていると
仕事メアドに続々と迷惑メールが届くのでした。(どうにかならないのかな?
とりあえずDiCEのためにWindowsのPCを立ち上げなくても良くなったので良しとしよう。