나는 이미 자바에 대해 알고 있으며, 리눅스에서 파이썬을 시험해보기로했다.파이썬 - 서브 프로세스에서 출력을 가져와 IF와 비교하기
스크립트가 루트로 실행되는지 여부를 확인하기위한 간단한 프로 우지를 만들었습니다. 그렇지 않은 경우 암호를 요청합니다.
1000
You are NOT running this script as root.
Please enter your Linux password:
이제 문제는 IF가 작동하지 않는, 또는 좀 더 정확하게 uid != 0
는 내가하고 싶은 일을하지 않는다는 것입니다 :
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:")
이
이 출력됩니다. IF 문은 루트로 스크립트를 실행할 때도 항상 false로 표시됩니다. 또한 실패한uid == 1000
을 시도했습니다.
나는 '다른 것'을 문자열이나 정수와 비교하고 있기 때문에 이것이 의심 스럽다. 그러나 나는 그 무언가를 얻는 방법이나 그것을 변환하는 방법을 모른다. 그러나 이것은 평신도의 추측이다. 하프.
감사합니다. 작동했지만 어떻게 반환했는지 어떻게 알았습니까? http://docs.python.org/2/library/subprocess.html을보고 있는데 통신 기능에는 아무 것도 없습니다. 나는 또한 type()을 사용해 보았지만 어떤 이유로 작동하지 않았다. – user2579116
설명서에 언급이 없으면 Google에 알려줍니다. 구글이 일할 수 있다면. 나는 그것을 스스로 시도한다. 코드가 길지 않아서 2.x와 3.x에서 모두 시도해 보았습니다. 이 코드는 내 PC에서 잘 작동합니다. :) 바보 예. @ user2579116 – zhangyangyu
어, 그때 혼란스러워 할거야 : 3 어쨌든, 덕분에 톤. – user2579116