定期的にファイアウォールを再起動する必要があるため、bashファイルを作成してCRONテーブルに追加しました。
ターミナルで次のコマンドを使用してファイアウォールを再起動します。
service firewall restart
しかし、私のbashファイル()myscript.sh
に次のような行がある場合:
#!/bin/sh
service firewall restart
ターミナルで(ルートとして)実行します.
sh myscript.sh
ファイアウォールは再起動されません。
違いは何ですか? Bashファイルからサービスを再起動するには?
編集する
私も次のコマンドを試しました。
/etc/init.d/firewall stop
/etc/init.d/firewall start
そして
/etc/init.d/firewall restart
また、次のようにファイルを実行してみました。
/bin/sh myscript.sh
それでも動作しません。
編集する 私のbashスクリプトは次のとおりです。
#!/bin/sh
if [ some statement ]; then
/etc/init.d/firewall restart # also tried: eval /etc/init.d/firewall restart
stat /some/file -c %Y > /root/statfile
# if I add any statement here it is being executed, so it is not the fault of incorrect if statement
fi
答え1
cron
シェルにランダムにログインする環境とは異なります。ご使用の環境には、ファイアウォールスクリプトに必要ないものがある可能性があります。
を確認する/var/mail
か、メールプールが何であるかを試してください。 Cronは、デフォルトでcrontabが特定のタスクを実行しているユーザーに出力をメールで送信しますが、MTAを構成していない場合、この出力は表示されません。出力結果が明確でない場合は、set -x
スクリプトの先頭に追加するかenv
(引数なしで)コマンドを追加し、出力をシェルで実行したときに同じコマンドの出力と比較します。
他のすべての方法が失敗した場合は、出力を公開していっぱいスクリプト(編集しないでください。すべてが大丈夫だと思うからといって必ずしもそうではありません。情報を公開しないと助けになりません)
答え2
あなたは何をするつもりですか?some statement
タブレット
if [ some statement ]; then ...
これは言葉ではありません。
答え3
/etc/init.d/firewall restart
代わりにこれを行うとどうなりますかservice firewall restart
?
これはパスかもしれません。
実行可能にすることを忘れないでください。
chmod +x myscript.sh
答え4
スクリプトはsudoを使用して呼び出す必要があります。また、sudo を使用して Wheel Administrators グループ アカウントに他のユーザーを置く方法もあります。これは、使用中の展開、使用可能なオプション、およびそれらを使用して十分な権限でスクリプトを実行できる方法によって異なります。
sudo -u [username] -S myscript.sh < password_file.txt
ファイル権限にグループアカウントを使用している場合は、スクリプトファイル(myscript.sh)のグループ権限に含める必要があり、グループがアクセスできるディレクトリに配置する必要があります。ホイールまたは他のグループのユーザーは、-u [usename]オプションを使用するスクリプトを介して呼び出す必要があります。ホイールアカウントを使用している場合は、cronアカウントをユーザーとして使用しません。また、sudoリストにユーザーを追加する必要があります。 Wheelsetはセキュリティ上のリスクがあることが証明されているため、一部のディストリビューションでは廃止されました。この場合、管理目的でグループを作成し、そのグループを使用してファイル権限を取得します。
sudo リストにユーザーを追加する方法は次のとおりです。https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos...このチュートリアルをガイドとして使用してください。
また、スクリプトにstderrコードを含めるか、sdtoutをテキストファイルにリダイレクトする場合は、スクリプトを呼び出すときに発生する問題についても説明します。
sudoを安全に使用する方法と技術はさまざまです。これは実際にはユーザーおよび/または会社の規則とセキュリティポリシーに関連しています。