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でコマンドを正常に実行できます。しかし、Pythonコードでは機能しません。

ベストアンサー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を再度使用する必要はありません。

おすすめ記事