質問: 「sudo」なしでコマンドを実行するにはどうすればよいですか? サーバー上のnagiosが正しく機能していません。 「sudo」がないとコマンドlftpを実行できません。 「sudo」を使用せずにnagiosがコマンドを実行できるようにする方法はありますか?私の/etc/group:nagios:x:107:www-data,nagioslftpを使用したスクリプト:-rwxr-xr-x 1 root nagios 3667 říj 20 12:20 check_ftp_fully/usr/bin/lftp:-rwxr-xr-x 1 root root 924936 srp 7 2013 lftpところで私は試しました この答え 成功しませんでした。それでも動作しません。[〜#〜] edit [〜#〜]:スクリプトはnagiosによって$user5$/check_ftp_fully.sh <username> <password> <port>として呼び出されます。チェックスクリプトは ここ です。ディレクトリの一覧表示に失敗します(ftp check failed when trying to list the contents of a directory.)edit2:nagiosの問題は、ifの知識ほど重要ではなく、「sudo」なしでコマンドを実行するにはどうすればよいですか。例えば。 mkdir in /etc
回答: スクリプトはnagiosによって./check_ftp_fully.shとして呼び出されます ここでの先頭の./は、スクリプトが存在するディレクトリからスクリプトを実行していることを示しています。私はあなたがこのディレクトリへの書き込みアクセス権を持っていないことを推測しています(実際にそうすべきではありません)。代わりに/tmpスクリプトへのフルパスを使用して、呼び出し元のスクリプトをホームディレクトリ(または、たとえばcheck_ftp_fully.sh)で実行するように変更します。さらに良いことに、またはさらに、一時ディレクトリを作成するようにテストスクリプトを変更し、完了時に削除します(たとえば、構文エラーの場合でも、trapを参照)。