ルート権限で実行する必要があるシェルスクリプトを書いています。
sudo -nv || echo "no sudo"
、しかし、彼の資格情報がまだsudo
によってキャッシュされている場合、それは私を助けません 、しかし彼はそれで私のスクリプトを呼び出さなかった。そのため、sudoを使用してスクリプトを呼び出さずに、ユーザーに反応する方法がありません。
sudo
を入れることができます それを必要とするすべてのコマンドの前にあるので、ユーザーがroot権限を持っているかどうかを確認するだけで十分ですが、私にはもっと良い解決策があるはずだと思います。
スクリプトに入れることができるコマンドを探しています。このコマンドは、ユーザーにroot権限を要求し、提供されている場合は、ユーザーが最初にroot権限で呼び出したように、スクリプトの残りの部分を実行します。
欲しいもの:
#!/bin/bash
if ! command; then # what I'm looking for
echo "This script needs root privileges."
exit 1
fi
mv /bin/cmd1 /bin/cmd2 # requires root
2回編集
承認された回答:
ルートであるかどうかをテストし、そうでない場合は、sudo
で再起動します 、例:
#! /bin/bash
if [[ $EUID -ne 0 ]];
then
exec sudo /bin/bash "$0" "[email protected]"
fi