2013-01-18 2 views
0

나는 paramiko에 약간의 문제가 있습니다. 모든 명령은 수동 ssh 세션과 같이 실행되지 않는 것 같습니다. "역사"쉘 명령에SSH에서 작동하지만 Paramiko에서 작동하지 않는 명령

하자 초점, 나의 주요 관심사는이 명령의 경우에도 : 모두 수동 SSH 세션을 사용하여 작업하는

$ python /home/metrosim/src/urbansim/tools/make_indicators.py \ 
-x /home/metrosim/project_configs/paris_zone_ovh_km130110.xml \ 
-c /home/metrosim/data/paris_zone/base_year_data_a \ 
-i trip_generation -y [1999] 

아니라 paramiko와 함께,하지만 ls -lA 작업과 같은 간단한 명령. 당신이 쉘 세션을 에뮬레이션하려면

stdin, stdout, stderr = ssh_client.exec_command('history') 

print 'LINES : ' 
data = stdout.read().splitlines() 
for line in data: 
    print line 

답변

0

, invoke_shell() 대신 exec_command()의를 사용해보십시오 :

여기 내 코드입니다. invoke_shell 문서에서

:

요청이 채널에 대화 형 쉘 세션 . 서버가 허용하면 채널은 이 쉘의 stdin, stdout 및 stderr에 직접 연결됩니다.

일반적으로이 전에 get_pty를 호출하면 쉘 이 pty를 통해 작동하고 채널은 stdin 및 pty의 stdout에 연결됩니다.

쉘이 종료되면 채널이 닫히고 재사용 할 수 없습니다. 다른 쉘을 열려면 새 채널을 열어야합니다.

+0

실제로 쉘 세션을 에뮬레이트하고 싶지는 않습니다. 처음에는 긴 명령을 실행하고 싶었습니다.이 명령은 paramiko를 통해 작동하지 않았기 때문에 역사적인 것을 따라 잡으려고했지만 표준 셸 SSH를 통해 작업했습니다. 어쨌든 'history'를 실행하여 stdout에서 내역으로 무엇을 인쇄해야합니까? – Touki

관련 문제