crontabでipsetが実行されていません。

crontabでipsetが実行されていません。

1行に1つずつIPを含むtxtファイルがあり、ipsetを使用してそれをブロックしたいと思います。

デフォルトでは、プレーンテキストファイルを読み取り、配列を構成するbashスクリプトがあります。次に配列要素を繰り返し、この目的で作成したIPsetに各要素を追加します。

問題はこんな感じです。端末で手動でスクリプトを実行するとうまくいきますが、crontabを使用して定期的に実行するスクリプトを追加するとスクリプトは実行されますが、IPsetにIPは追加されません。

これはスクリプトの関連部分です。

index=0
while true; do
  ipset -quiet -A myIpset $[arrayOfIPS[$index]}
  index=$[$index + 1]
  if [ "$index" -gt "$lastIndexOfArray" ];
  then break
  fi 
done

これは端末では完全に実行されますが、crontabジョブでは実行されません。なぜ?

ベストアンサー1

ipsetシェルは、PATH環境に設定されている内容を確認して、実行可能ファイル(たとえば)を見つけることができる場所を知っています。cron同じ環境を共有しないでください。これをcrontab(またはスクリプト)の上部に追加すると、予想されるコマンドが見つかる場所を教えてくれます。

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

おすすめ記事