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

如何在stdin、stdout、stderr中将参数从python内部传递到远程ssh命令,python,shell,paramiko,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.co

我使用
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命令不工作

我认为您的问题在于
exec\u command()
参数。试试这个:

stdin,stdout,stderr=p.exec_命令(“sh-c'cd/bca/scripts;touch{}'”.format(X))

它在shell中运行命令(例如,
cd
工作),并且{}扩展X变量。

touch命令不工作
——这是实际输出吗?我在网上找不到有关此消息的任何信息,因此假设没有。请将您的示例升级为。@laenkeio:ys它只是假的…..使用了您的代码…但出现如下错误导入:无法打开X服务器
'。导入:无法打开X服务器
”。导入:无法打开X服务器
'。导入:无法打开X服务器
”。导入:无法打开X服务器
'/test1.py:第7行:意外标记附近的语法错误('./test1.py:第7行:`p=paramiko.SSHClient()'如果您试图运行X命令并通过paramiko转发屏幕,我认为您最好打开一个新问题,并提供有关该问题的详细信息。