2012-01-19 7 views
25

Drush commands not executing using ParamikoParamiko를 사용하여 디렉토리를 변경하려면 어떻게해야합니까?

위의 질문은 Paramiko를 사용하여받은 지속적인 오류 메시지와 관련하여 게시되었습니다. 나는 그것이 내 다음 질문과 관련이 있다고 생각하지 않지만 그것이 될 수도있다.

Paramiko를 사용하여 SSH를 통해 내 서버에 연결할 수 있습니다. ls 또는 pwd와 같은 명령을 실행할 수 있습니다. 내가 할 수없는 일은 디렉토리를 변경하는 것입니다. 예를 들어, "cd .."명령을 보낼 수 있지만 "pwd"를 추적하면 디렉토리가 변경되지 않았 음을 알 수 있습니다. 그것은 단지 내가 로그인 할 때의 나는 초기 디렉토리를 나열합니다. 내가 오해

>>> stdin, stdout, stderr = myssh.exec_command("pwd") 
>>> stdout.readlines() 
['/big/dom/home/myid\n'] 
>>> stdin, stdout, stderr = myssh.exec_command("cd ../") 
>>> stdout.readlines() 
[] 
>>> stdin, stdout, stderr = myssh.exec_command("pwd") 
>>> stdout.readlines() 
['/big/dom/home/myid\n'] 
>>> 

오전 무슨 일이야? 디렉토리를 변경할 수 없어야합니까? 아니면 가능하면 exec_command를 사용하는 것보다 다른 방법으로해야합니까? -

, 그래서 여기에 대한 대답

나는 또 다른 7 시간 내 자신의 질문에 대답 할 수있어 :

은 파악했다이 사람 : http://www.vertigrated.com/blog/2010/02/python-remote-ssh-with-paramiko/

를 그냥 여러 보낼 필요 예컨대 하나 exec_command와 명령 :

myssh.exec_command ("CD ..; PWD ') 다음

stdout.readlines()를 것 변경된 디렉토리를 리턴하십시오.

+0

가능한 복제본 [Paramiko의 단일 세션에서 어떻게 여러 명령을 실행합니까? (Python)] (https://stackoverflow.com/questions/6203653/how-do-you-execute-multiple-commands-in-a-single-session-in-paramiko-python) – tripleee

답변

25

이 사람은 그것을 파악했다 : http://www.vertigrated.com/blog/2010/02/python-remote-ssh-with-paramiko/

그냥 같은 일 exec_command 여러 명령을 보낼 수 있습니다 변경 한 디렉토리를 반환합니다)

다음
myssh.exec_command('cd ..; pwd') 

stdout.readlines (에.

+0

여러 명령을 보내려고했습니다. "ssh.exec_command ('cd/usr/soumya/PGMS /; pwd')"와 같은 하나의 exec_command가 있지만 작동하지 않습니다. 그래서 나는 stderr 출력을 출력하려했는데 다음과 같다 : [ 'bash : 0 : cd :/usr/soumya/PGMS/: No such file or directory \ n']. 출력 결과가 여전히 루트에 있음을 나타냅니다. "[ '/ root \ n']" –

0

조금 늦었지만 'invoke_shell'을 사용하여 파일을 통해 표준 입력에 쓸 수 있습니다. https://stackoverflow.com/a/6203877/1861353

는 약간 헤비급을 보이기 때문에 당신은 할 수 있습니다 ','참여 (cmdlist)과 exec_command에 보내

참조하십시오.. 버전으로

3

은 2.1 디렉토리를 변경할 수있는 방법은 sftp.chdir('path/to/directory')

1

잘 paramiko 쉘의 인스턴스를 생성하고 paramiko에서 실행하고자하는 모든 명령은 쉘의 인스턴스를 제공 할 필요가있다.

예 : 내가 들어있는 디렉토리에 폴더가 있다고 가정 해 봅시다.내가 폴더 1로 CD를 원하고 내가 어떻게 할 것인지가 디렉토리를 만들 경우 지금

folder1 
folder2 
folder3 

은 다음과 같습니다

ssh.exec_command('cd folder1') 
ssh.exec_command('mkdir folder4') 

당신은 얻을 것이다 :

ssh.exec_command('cd folder1;mkdir folder4') 

당신이 좋아 작성하는 경우 결과는 다음과 같습니다.

folder1 
folder2 
folder3 
folder4 

쉘의 두 개의 다른 인스턴스이며 함수에서 독립적입니다.

관련 문제