ssh でコマンドが実行できないときがあり調べた
sshを使ってリモートマシンでコマンドを叩く際の注意点 - 覚書
man(1) sshより抜粋:
-t Force pseudo-terminal allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services.
まずはインターネット上からcrontabに書いたコマンドを実行すると、正しくIPアドレスが得られました。これで解決したと思ってcrontab上のsshに-tオプションを付与したものの、またしてもIPアドレスを書き込んでいるはずのファイルは空でした。
man(1) sshを再度読んでみると、さきほど抜粋した-tオプションの説明には続きがありました。
-t Force pseudo-terminal allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
cronなどのttyを持たないプロセス(daemon)からsshを実行する場合は、-tオプションだけでは不十分で、-ttオプションが必要と書いてあります。crontab上のsshに-ttオプションを付与したところ、無事問題は解決できました。最初からmanをちゃんと読んでおけばもう少し解決が楽でした。反省。