質問: コマンドラインから実行すると動作するので、cron自体に問題があるかと見ています。 因みに、Linuxマシンでも同様の設定をしておりますが、こちらについてはうまく行っています。Macでは、うまく行っていないということです。 cronを動作させるための、Mac特有の設定などあればご教示いただきたいです。(macOS:Catalina) よろしくお願いいたします。
回答: > > */10 * * * * wget -q -O /dev/null http://mydnsーーーーー:ーーーーーー@www.mydns.jp/login.html > > > MyDNS の IP アドレスの更新ですか... 実行しているコマンドは、最初から質問に記載しておくと解決がもっと早かったのではないかと思います。 上記のようにコマンド名だけのフルパス(/からのディレクトリ)を指定していない書き方の場合、( cron で実行すると ) wget コマンドのあるディレクトリにパスが通っていない場合は `command not found` のエラーが出ていると思います。 cron で設定されている PATH は、通常 `PATH=/usr/bin:/bin` なので、`/usr/bin` や `/bin` にないコマンドは コマンド名だけでは実行できません。 > > cronを動作させるための、Mac特有の設定などあればご教示いただきたいです。(macOS:Catalina) > > > macOS に限りませんが、OS 標準でインストールされている以外のツールを利用する場合は、PATH が設定されていない場合がありますので、コマンド名だけで実行した場合に `command not found` のエラーが発生することがあります。 cron で実行させる場合は、コマンドやファイル名は、常にフルパスで記載するようにするとこのように悩むことはなくなると思います。 実際には、cron 実行時の PATH を指定する方法もありますが、これについては、ご自身で調べてみてください。 wget は、 Linux 系は、OSインストール時にインストールされますが、 macOS の場合は、 curl は標準でありますが、wget は、インストールされていません。 macOS ということなので、おそらく wget は、brew でインストールされていると思われますので、実行するコマンドをフルパスで記載して... ``` /usr/local/bin/wget -q -O /dev/null http://mydns00000:Password@www.mydns.jp/login.html ``` だとどうなるでしょうか。 また、URL にパスワードを記載すると書き方以外の別の書き方としては、 ``` /usr/local/bin/wget --http-user=mydns00000 --http-password=Password -q -O /dev/null http://www.mydns.jp/login.html ``` という書き方もできます。 最後に MyDNS は、常時SSL化されていて https でのアクセスに対応しているので `https://www.mydns.jp/login.html` にアクセスしたほうが良いと思います。 おまけ curl の場合は、 ``` /usr/bin/curl -u mydns0000:Password -i -s https://www.mydns.jp/login.html > /dev/null ``` で、同様なことが実行できます。