我正在尝试使用subprocess.Popen在Ubuntu VM上通过Python运行shell命令。但是,我需要输出此命令才能转到另一个VM上的文件。
我已经使用paramiko.SSHClient模块和client.open_sftp打开了该文件。
但是当我把它传递给Popen的stdout时,Python抱怨说
"属性错误:' SFTPFile'对象没有属性' fileno'
如何让Popen将其stdout发送到远程VM上的文件?
我的代码看起来像这样
MyClient = paramiko.SSHClient()
MyClient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
MyClient.load_system_host_keys()
MyClient.connect(args.serverip, username="xxx", password='yyy')
MySftp = MyClient.open_sftp()
RemoteLogFile = MySftp.file('/home/xxx/regression.log', "a")
...
p1 = subprocess.Popen([ShellCommand], cwd='/tmp/', shell=True, stdout=RemoteLogFile)