Windows 2012 서버에서 실행 가능한 gpg 파일을 해독하려고합니다. 현재 스크립트는 'try'블록에 액세스하지만 무한정 머물러 있습니다. 파일 크기가 약 500MB이므로 아무 것도 < 10 분이 걸립니다. 가장 긴 시간은 1 시간입니다. 이 코드는 다음과 같습니다.파이썬 서브 프로세스 호출 내부에 갇혀
# decrypt the pgp file
comm = (gpg + ' --batch --passphrase passphrase --homedir='+current_path
+' -o ' + zip_name +' --decrypt ' + file_name)
try:
subp = subprocess.check_call(comm, stdout=PIPE, stdin=PIPE, stderr=STDOUT)
stdout_data, stderr_data = subp.communicate()
print stdout_data, stderr_data
except subprocess.CalledProcessError as e:
print e.output
logger.update('Error', process, runtime=0, error=e)
raise Exception('Error Decrypting File')
포함되지 않았지만 키를 가져 왔습니다.
추가/제거 또는 다르게 수행 할 수있는 항목이 1) 호스트 시스템 (Windows 서버) 내에서 발생하는 상황을 더 잘 파악하고 2) 무기한 실행하지 않고 유용한 정보를보고하는 이유 그것은 무기한으로 달리고있었습니다.
설명이 필요한지 알려주세요. subprocess.check_call()
에 대한 파이썬의 문서에서
아마도 'stdin = PIPE'가있는 이유는 무엇입니까? gpg는 먹이를주고 기다리는 것을 기다리고 있을지도 모릅니다. – user2722968
또한 명령 줄 전체를 하나의 문자열로 묶어서는 안되며 모든 것에 프로그램 이름과 개별 인수를 사용하십시오. 그렇지 않으면 gpg 측에서 인수 분석 구문 분석 문제가 발생합니다. – user2722968