![Python에서 exec_command의 특수 문자를 이스케이프하는 방법](https://linux55.com/image/137301/Python%EC%97%90%EC%84%9C%20exec_command%EC%9D%98%20%ED%8A%B9%EC%88%98%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%9D%B4%EC%8A%A4%EC%BC%80%EC%9D%B4%ED%94%84%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
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 ls
Putty에서 명령을 성공적으로 실행할 수 있습니다 . 하지만 파이썬 코드에서는 작동하지 않습니다.
답변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를 사용할 필요가 없습니다.