들과 소통하는 것이 가능 할 sub 하위 프로세스와 함께 하위 프로세스.Popen?
-
05-07-2019 - |
문제
를 쓰려고 노력해요 python 스크립트는 패키지에 우리의 소프트웨어입니다.이 스크립트를 구축하는 데 필요한 우리의 제품 및 포장니다.현재 우리가 다른 스크립트는 각각의 조각은 개별적으로 포함하는 csh 및 perl 스크립트가 있습니다.하나의 스크립트를 실행하는 다음과 같:
sudo mod args
모드는 perl 스크립트그래서 나는 할 것입
proc = Popen(['sudo', 'mod', '-p', '-c', 'noresource', '-u', 'dtt', '-Q'], stderr=PIPE, stdout=PIPE, stdin=PIPE)
문제는 이 모드는 스크립트가 필요 몇 가지 질문에 대답합니다.이를 위해 내가 생각하는 전통적인
(stdout, stderr) = proc.communicate(input='y')
하고 있습니다.나는 생각하지 않기 때문에 작업하는 프로세스 Popen 은 제어 sudo,아니 모 스크립트에게 묻는 질문입니다.어떤 방법이 교통하는 모드와 스크립트 실행을 통해 sudo?
해결책
나는 선택을 가 Pexpect.
import pexpect
child = pexpect.spawn ('sudo mod -p -c noresource -u dtt -Q')
child.expect ('First question:')
child.sendline ('Y')
child.expect ('Second question:')
child.sendline ('Yup')
다른 팁
내가 생각하 제거해야 합니다 sudo
에 Popen
전화 사용자가 필요합의 귀하의 스크립트 유형 sudo
.
또한 이렇게 많은 명시적을 위한 필요 높은 권한에서의 스크립트 감추는 대신 그것은 내부 Popen
.
가장 간단한 것이 될 것이 실행하여 제어 script(Python 스크립트)를 통해 sudo
.당신은 당신을 할 수 있는 것 또는 없는 옵션입니까?
정보가 필요합니다.
- 은 sudo 요청을 위해 당신 password?
- 어떤 종류의 인터페이스 모드는 스크립트가에 대한 질문?
기 때문에 이런 것들은 처리하지 않으로 정상적인 파이프를 통해.
솔루션 모두에 대한 이들의 수 Pexpect, 는 오히려 전문가의 처리에서 재미있는 스크립트는 요청을 위해 암호를 다양한 기타 입력 문제입니다.
제휴하지 않습니다 StackOverflow