rootのみがmailxを実行でき、opsのみがプロセスを再開できる状況があります。プロセスを再開し、そのことについての電子メールを送信する自動化されたスクリプトを作成したいと思います。
関数を使用してこれを試してみると、関数が「見つかりません」です。
私は次のようなものを持っていました:
#!/usr/bin/bash
function restartprocess {
/usr/bin/processcontrol.sh start
}
export -f restartprocess
su - ops -c "restartprocess"
mailx -s "process restarted" myemail.mydomain.com < emailmessage.txt
exit 0
関数が見つからなかったとのことです。トラブルシューティングの結果、opsユーザーのデフォルトシェルはkshであることが判明しました。
スクリプトをkshで実行するように変更し、「export-f」を「typeset-xf」に変更しようとしましたが、それでも関数が見つかりませんでした。のように:ksh:exportfunctionが見つかりません
私はついにあきらめて、スクリプト(関数に直接含まれていた)を呼び出したところ、それは機能しました。それは次のようなものでした:
su - ops -c "/usr/bin/processcontrol.sh start"
(これはもちろん、実際のスクリプトを単純化したものです)。
ユーザーopsのデフォルトシェルがkshであり、それを変更したりsudoersを変更したりできない場合、opsとしてsu(およびopsのプロファイルを実行する必要がある)してその関数を実行できるように関数をエクスポートする方法はありますか?
opsユーザーに、実行したいスクリプトのディレクトリへのアクセス許可と、そのスクリプトを実行するためのアクセス許可があることを確認しました。
これについての教育をいただければ幸いです。