Python에서 exec_command의 특수 문자를 이스케이프하는 방법

Python에서 exec_command의 특수 문자를 이스케이프하는 방법

paramiko를 사용하여 한 서버에서 다른 서버로 연결하려고 합니다. 코드는 다음과 같습니다.

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname, username='abc', password='password')
stdin, stdout, stderr = ssh.exec_command('ssh xyz@host1 ls')

특수문자 "@" 때문에 위 코드를 실행할 수 없습니다. 누군가 나에게 해결 방법을 제안해 줄 수 있나요?

ssh xyz@host1 lsPutty에서 명령을 성공적으로 실행할 수 있습니다 . 하지만 파이썬 코드에서는 작동하지 않습니다.

답변1

사용자 이름과 호스트는 이미 지정되어 있으므로 ssh.connect그렇게 할 필요가 없습니다 ssh xyz@host1.

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname, username='abc', password='password')
stdin, stdout, stderr = ssh.exec_command('ls')

ssh.connect연결이 설정 중이므로 다시 SSH를 사용할 필요가 없습니다.

관련 정보