cronのBashポート自動アップグレードスクリプトが機能しませんか?

cronのBashポート自動アップグレードスクリプトが機能しませんか?

私は最近、FreeBSDサーバーにインストールされている新しいバージョンのポートとソフトウェアを自動的にチェックするスクリプトを書いてみました。スクリプトはルートのcrontabに追加され、毎日トリガされます。 sudo /path/to/scriptで実行すると、通常はメールアドレスにメールが送信されます。 cronで実行すると空のメールが届きます。その理由は、更新中に時々コンパイルオプションを含むウィンドウが表示されるためかもしれませんがmake config(私の考えでは)私が間違っているかもしれません。スクリプトは次のとおりです。

#!/usr/local/bin/bash
# DIRECTORIES SETUP
script_path_dir="/tmp"
working_dir="$script_path_dir/portsupgradescript"

# FILES SETUP
mail_file="$working_dir/mail.txt"
mail_address="MY_MAIL_ADDRESS"
mail_subject="Daily update"
pm_out="portmaster_log.txt"
pu_out="portupgrade_log.txt"


# START

if [ ! -d "$script_path_dir" ];
 then
  echo "Script base directory set does not exist. Creating..."
  mkdir $script_path_dir
 else
  echo "Script base directory set exists. OK"
fi

if [ ! -d "$working_dir" ];
 then
  echo "Script working directory set does not exist. Creating..."
  mkdir $working_dir
 else
  echo "Script working directory set exists. OK"
fi

if [ "$(ls -A $working_dir)" ]; then
 echo "Script working directory is empty. OK"
else
 echo "Script working directory is not empty. Cleaning..."
 rm -rf $working_dir/*
fi


rm -rf $pm_out
rm -rf $pu_out
rm -rf $mail_file

/usr/sbin/portsnap fetch update && \
/usr/local/sbin/portmaster -L --index-only | egrep '(ew|ort) version|total install' > $pm_out

linecount=`wc -l $pm_out | awk {'print $1'}`
if [ "$linecount" != "0" ]
then
 echo "Master file log not empty. Concatenating..."
 cat $pm_out >> $mail_file
 else
  echo "Master file log empty... ( x )  "
fi


portupgrade -aqyP -l $pu_out

upg_linecount=`wc -l $pu_out`
if [ "$upg_linecount" != "0" ]
 then
  echo "Upgrade file log not empty. Concatenating..."
  cat $pu_out >> $mail_file
 else
  echo "Upgrade file log empty... ( x ) "
 fi


echo "Seding mail report..."
 cat $mail_file | mail -s "$mail_subject" "$mail_address"

make config問題が発生しないようにウィンドウ内のデフォルト値を選択する方法はありますか?それとも、rootの代わりにユーザーのcronでこのスクリプトを実行する必要がありますか?

ベストアンサー1

portsnapcronで実行している場合は、代わりにそれを使用する必要cronがありますfetch。サーバーに接続する前に、1秒から1時間の間のランダムな時間の間、スリープモードのままです。これの目的は、同時に多数のクライアントがオンラインになり、サーバーを攻撃する可能性を減らすことです。

portupgradeすべてのポートを完全に自動化された方法で処理するように設計されたオプションがあるため、デフォルトまたは以前の--batch呼び出しの結果を受け入れる必要がありますmake config。これがあなたが探しているものかもしれません。

おすすめ記事