私はすでに Java を知っているので、すべてのニーズに合わせて Linux で Python を試してみることにしました。
スクリプトがルートとして実行されているかどうかを確認する簡単なプログラムを作成し、そうでない場合はパスワードを要求します。
import subprocess;
process = subprocess.Popen(['id', '-u'], stdout=subprocess.PIPE)
uid, err = process.communicate()
print(uid)
if uid != 0:
lpass = raw_input("\nYou are NOT running this script as root.\n Please enter your Linux password:")
これは出力です:
1000
You are NOT running this script as root.
Please enter your Linux password:
さて、問題は IF が機能しないことです。より正確には、IF がuid != 0
やりたいことを実行しないことです。ルートとしてスクリプトを実行した場合でも、IF ステートメントは常に false として出力されます。私も試しましたが、uid == 1000
どちらも失敗しました。
これは、「何か他のもの」を文字列または整数と比較しているためだと思われますが、他の何かを取得する方法や変換する方法がわかりませんが、これは素人の推測にすぎません。半分。