「sudo:申し訳ありません。sudoを実行するにはパスワードが必要です」を抑制します。

「sudo:申し訳ありません。sudoを実行するにはパスワードが必要です」を抑制します。

パスワードを指定せずに他のユーザーとしてコマンドを実行するために必要なsudo権限がユーザーにあるかどうかをテストしようとしています。私が持っているのはこれです

 sudo -u other-user -n true
  if [ $? -ne 0 ]; then
    echo "ERROR: You don't have the neccessary sudo rights"
  else
    echo "OK. You do have the neccessary sudo rights"
  fi

ただし、sudoにパスワードが必要な場合、スクリプトはこのエラーメッセージを出力します。

  sudo: sorry, a password is required to run sudo

このエラーメッセージを表示しない可能性がありますか?

システムエラーとシステム出力をリダイレクトしようとしましたが、エラーメッセージが表示され続けます。

  sudo -u other-user -n true > /dev/null 2>&1

ベストアンサー1

一般的な方法は私にとってうまくいきます。

$ sudo -u test -n true  
sudo: a password is required
$ echo $?                                   
1
$ sudo -u test -n true >/dev/null 2>&1
$ echo $?                                   
1

しかし、何らかの理由で役に立たない場合は、次のことを試してください。

$ { sudo -u test -n true ; } >/dev/null 2>&1
$ echo $?                                   
1
$ ( sudo -u test -n true ) >/dev/null 2>&1
$ echo $?                                 
1

おすすめ記事