[PYTHON] 어떻게 파이썬 스크립트에서 리눅스에서 사용자 암호를 설정할 수 있습니까?
PYTHON어떻게 파이썬 스크립트에서 리눅스에서 사용자 암호를 설정할 수 있습니까?
SFTP 액세스 설정을 자동화하려고합니다. 이 스크립트는 sudo 권한과 암호가없는 사용자로 실행 중입니다.
나는 이렇게 사용자를 만들 수있다 :
>>> import subprocess
>>> process = subprocess.Popen(['sudo', 'useradd', 'test'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> process.communicate()
('', '')
다음으로 사용자의 비밀번호를 설정해야하지만 방법을 알 수는 없습니다. 여기 내가 시도한 것이있다.
>>> process = subprocess.Popen(['sudo', 'chpasswd'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> process.communicate('test:password')
내 파이썬 프로그램에서는 아무런 영향을 미치지 않는다. 인터프리터 인터프리터에서는 첫 번째 줄 뒤에 잠근다.
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
우분투에서 파이썬 2.6을 실행 중입니다.
해결법
-
==============================
1.통신을위한 문서에서는 통신 매개 변수를 통해 표준 입력으로 데이터를 보내는 경우 stdin = PIPE를 추가해야한다고 말합니다.
통신을위한 문서에서는 통신 매개 변수를 통해 표준 입력으로 데이터를 보내는 경우 stdin = PIPE를 추가해야한다고 말합니다.
http://docs.python.org/release/2.6/library/subprocess.html#subprocess.Popen.communicate
이건 그냥 해골 코드입니다,하지만 여기에 또 다른 몇 가지 작은 의견이 있습니다, 그들이 사용의 경우 :
-
==============================
2.자동화가 필요할 때 아래 코드를 시도하십시오.
자동화가 필요할 때 아래 코드를 시도하십시오.
from subprocess import Popen, PIPE, check_call check_call(['useradd', 'test']) proc=Popen(['passwd', 'test'],stdin=PIPE,stdout=PIPE,stderr=PIPE) proc.stdin.write('password\n') proc.stdin.write('password') proc.stdin.flush() stdout,stderr = proc.communicate() print stdout print stderr
print 문은 선택 사항입니다.
-
==============================
3.당신이 이것을 잊었 :
당신이 이것을 잊었 :
stdin=subprocess.PIPE
프로세스에 데이터를 보내려면 표준이 필요합니다.
따라서 완전한 진술은 다음과 같습니다.
process = subprocess.Popen(['sudo', 'chpasswd'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
통신 ( '암호')을 호출하십시오.
-
==============================
4.우분투에서는 usermod를 사용하십시오.
우분투에서는 usermod를 사용하십시오.
class SomeClass def userPasswd(self, login, password): encPass = crypt.crypt(password) command = "usermod -p '{0:s}' {1:s}".format(encPass, login) result = os.system(command) if result != 0: logging.error(command) return result
-
==============================
5.문제는 sudo에 -S 옵션을 잊었다는 것입니다.
문제는 sudo에 -S 옵션을 잊었다는 것입니다.
from https://stackoverflow.com/questions/4688441/how-can-i-set-a-users-password-in-linux-from-a-python-script by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬을 사용하여 단색 이미지의 방울 주위 사각형 사각형 상자 (0) | 2018.11.10 |
---|---|
[PYTHON] Windows에서 파이썬으로 데몬 프로세스를 시작하는 방법은 무엇입니까? (0) | 2018.11.10 |
[PYTHON] Colaboratory에 로컬 데이터 파일로드 (0) | 2018.11.10 |
[PYTHON] 파이썬을 사용하여 PDF에서 텍스트로 표를 추출하는 방법은 무엇입니까? (0) | 2018.11.10 |
[PYTHON] pyqt에서 로그를 표시하는 가장 좋은 방법은 무엇입니까? (0) | 2018.11.10 |