如何将参数从python内部传递到stdin,stdout,stderr中的远程ssh命令

时间:2019-05-06 10:32:54

标签: python shell paramiko

我正在使用paramiko通过SSH连接到远程主机,并运行一些简单的命令,例如cd。在第二个命令中,我需要传递一个参数,如下例所示:

import paramiko 
import os
import shutil
import datetime
import socket
X='ABCDF12'
p=paramiko.SSHClient()
p.set_missing_host_key_policy(paramiko.AutoAddPolicy())
p.connect("example.com",username="tatta",password="abcy1")
print(socket.gethostname())

stdin, stdout, stderr = p.exec_command("cd /bca/scripts;touch $X") 
opt = stdout.readlines()
opt = "".join(opt)
print(opt)

预期:ABCDF12
实际:touch command not working

1 个答案:

答案 0 :(得分:2)

我认为您的问题出在exec_command()参数中。试试这个:

stdin, stdout, stderr = p.exec_command("sh -c 'cd /bca/scripts; touch {}'".format(X))

它在shell中运行命令(例如cd起作用),而{}扩展X变量。