2013-05-05 1 views
0

SSH를 다른 머신에 양말 프록시로 사용하려고 시도하고 있는데, 계속 진행할 것인지 묻습니다. 그래서 사용 :파이썬에서 다른 머신으로 ssh-ing 할 때 stdin을 우회

proxy_cmd = "ssh -o 'StrictHostKeyChecking no' -i " + key_filename + ' -D 9998 [email protected]' + ip_address  
subprocess.Popen(proxy_cmd, shell=True, stdout=subprocess.PIPE) 

if not raw_input('would you like to proceed?(y)')=='y': 
    sys.exit() 

내가 얻을 :

IOError: [Errno 11] Resource temporarily unavailable 

나는 ssh를 열려하고 표준 입력 또는 무언가를 캡처하기 때문에 그건 가정합니다. 난 그냥 우회하는 방법을 모르겠다. (나는 ssh에 입력을 보낼 필요가 없다. 나중에 셀레늄을 나중에 사용하기를 원한다.) 어떻게하면 되겠습니까? 당신이 당신의 파이썬 프로그램에 사용할 수 stdin을 유지하려면

답변

1

, 당신은 ... 뭔가 등으로, 당신이 그것을 사용할 의도가없는 경우에도 ssh 프로세스 stdin 리디렉션해야합니다

subprocess.Popen(proxy_cmd, 
       shell=True, 
       stdin=subprocess.PIPE, 
       stdout=subprocess.PIPE) 

subprocess 모듈은 개체에 대한 참조를 subprocess._active 목록에 그대로 유지하지만 나중에 작업을 수행 할 수 있도록 결과 Popen 개체를 변수에 바인딩 할 수도 있습니다.

+0

고마워요! 그것은 매력처럼 작동합니다. – eran

관련 문제