2017-05-21 11 views
0

저는 Paramiko (초보자)를 사용하여 Linux 서버에 연결합니다. 서버에 연결하여 다른 명령 (예 : 'ls', 'uptime')을 실행하고 결과를 읽을 수 있습니다. 그러나 'sudo -iu'명령 (암호가 필요 없음)을 실행하려고하면 Paramiko가 중지됩니다. 같은 Xshell로 알려진 SSH 도구를 사용하여이 명령을 실행에는 문제가 없는지,paramiko exec_command "sudo -iu"가 응답하지 않습니다.

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy()) 
sh.connect (server, username='aaaa', password= 'bbbbb', key_filename='C:\\Users\\aaaa\\Documents\\paramiko_dsa_key') 
     stdin, stdout, stderr = ssh.exec_command("sudo -iu aaauser") 
     #stdin, stdout, stderr = ssh.exec_command("uptime") 
     print stdout.read() 

참고 : 여기에 관련 코드 라인이다. 사전에

감사합니다, 탈

답변

1

Paramiko 매달려 예상된다 정확히 것입니다. sudo -i을 실행하면 새로운 쉘이 생성되고 새로 생성 된 쉘이 종료 될 때까지 현재 쉘이 I/O 대기 상태가됩니다.이 때 제어는 Paramiko로 되돌아갑니다.

sudo -i을 실행하면 결과가 stdout으로 출력되지 않으므로 현재 루프가 I/O 대기 상태에서 멈추고 중단됩니다. sudo -i은 스크립트에서 절대로 사용해서는 안되며 대화식 셸에만 사용해야합니다.

  1. 는 사용자 aaauser로 로그인을 허용하고 처음부터이 문제를 방지하기 위해 SSH 데몬을 구성

    당신은 두 가지 옵션이 있습니다.

  2. 정상적인 비대화 형 방식으로 sudo을 사용하여 각 명령을 실행하십시오.
+0

첫 번째 옵션은 저에게 적합합니다. 고맙습니다! – Tal