2010-03-31 5 views
4

ssh를 통해 프로그램을 실행하고 파일에서 입력을 리디렉션하고 싶습니다. 다음 코드의 동작 :paramiko에서 stdin으로 EOF를 보내는 방법은 무엇입니까?

channel.exec_command('cat') 
with open('mumu', 'r') as f: 
    text = f.read() 
    nbytes = 0 
    while nbytes < len(text): 
     sent = channel.send(text[nbytes:]) 
     if sent == 0: 
      break 
     nbytes += sent 

는 (공개 키 인증을 가정)에 해당되어야한다 :

ssh [email protected] cat < mumu 

하는 애플리케이션보다 입력을 기다리는되면 정지하지만. 나는 stdin 스트림이 절대로 닫히지 않기 때문에 이것이 일어난다 고 생각한다. 어떻게해야합니까?

답변

5

채널의 shutdown() (또는 shutdown_write())으로 전화하십시오.

+0

stdout과 stderr는 어떻게됩니까? – Alexandru

+0

@Alexandru : 잘못된 기능이 있습니다. –

4

channel.shutdown_write()을 호출하십시오.

관련 문제