로컬 시스템에서 우분투에서 실행중인 Python 프로그램이 있습니다. 프로그램을 실행하는 동안 우분투와 실행중인 다른 두 개의 원격 컴퓨터에 연결됩니다. 이 컴퓨터에 연결할 IP 주소, 이름 및 암호가 있습니다. 로컬 시스템은 원격 시스템에 명령을 보내고 원격 시스템은 응답을 보냅니다. 지금 당장 나는 원격 컴퓨터가 로컬 컴퓨터로 'hello'를 다시 보내도록하려고 시도하고 있습니다. 나는 원격 내 로컬 컴퓨터에서 명령 행에서이 기계 모두에 사용 할 수 있습니다원격에서 Windows에 우분투 연결
sshpass -p password ssh -X [email protected]
비밀번호, 이름하고, 여기서 ipaddress가 제대로 각 시스템으로 채워됩니다. 그래서 저는 두 컴퓨터 모두에 원격으로 연결할 수 있다는 것을 알고 있습니다. 거기에서 나는 그 기계에 로컬로있는 것처럼 모든 명령을 실행할 수 있습니다.
그러나 간단하게 echo 'hello'
명령을 보내는 동안 내 프로그램에서이 작업을 수행하고 싶습니다. 나는 성공적으로 다음과 원격 우분투 서버에이 작업을 수행 할 수 있습니다
from subprocess import Popen, PIPE
cmd = ["sshpass", "-p", password, "ssh", "-X", name+"@"+ipaddress, "echo 'hello'"]
ssh = Popen(cmd, stdout=PIPE, stderr=PIPE)
print ssh.stdout.readlines()
암호, 이름 및 여기서 ipaddress 이미이 점에 의해 정의되는 변수입니다. 이것은 다음과 같은 목록을 반환 우분투 원격 서버에서 작동 :
['hello\n']
이 좋은,하지만 Windows 서버에서 동일한하려고 할 때 빈 목록을 얻을 : 나는 '
[]
을 여러 가지 명령을 시도하고 항상 빈 목록을 얻습니다. Windows 서버에 연결할 때 수행해야 할 다른 것이 있습니까? 미리 감사드립니다.
나는 표준 에러를 보았고, 그 다음 목록을 포함
['X11 forwarding request failed on channel 0\r\n', 'exec request failed on channel 0\r\n']
나는 -X 태그를 포함하지 않는 경우 그때에만 두 번째 오류 얻을 :
['exec request failed on channel 0\r\n']
고마워,하지만 문제는 명령 줄에 명령을 직접 입력하면 Windows 서버에서 응답을받을 수 있지만, Python 스크립트에서 프로세스를 자동화하려고하면 ' 응답을 얻지 못한다. 그러나 Ubuntu에서 Ubuntu로 연결하면 아무런 문제가 없습니다. – MCSquared78