Como escapar de caracteres especiais em exec_command em python

1

Estou tentando conectar-me de um servidor a outro usando paramiko. Aqui está o código:

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')

Não consigo executar o código acima por causa do caractere especial "@". Alguém poderia me sugerir como resolvê-lo.

Eu posso executar o comando ssh xyz@host1 ls no putty com sucesso. Mas através do código python não está funcionando.

    
por Tarakram 20.07.2018 / 22:45

1 resposta

2

O nome de usuário e o host são especificados em ssh.connect , portanto, não é necessário fazer ssh xyz@host1 . Você pode apenas fazer:

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 está estabelecendo a conexão para que você não precise executar o ssh novamente.

    
por 20.07.2018 / 23:08

Tags