我正在尝试在Windows服务器上运行批处理文件。批处理文件包含以下代码:
“ rtmserver 7 5”。
实际上在Windows上运行:
C:\Program Files (x86)\Video Clarity\RTMonitor>rtmserver 7 5
即,它将打开cmd并运行此命令,以正确启动Windows应用程序
以相同的方式:
如果我双击该批处理文件,它将打开我可以使用的软件。
我将其拖放到cmd,它也可以运行(C:\ Users \ user> C:\ Users \ user \ Desktop \ ClarityCommands \ RTMServer.bat.lnk)
但是,如果我尝试从在使用paramiko并连接到该Windows的其他Linux机器上运行的SSH连接中打开它,它将失败:
class SSH_Connection(object):
def __init__(self, LOCAL_IP, username, password):
self.LOCAL_IP = LOCAL_IP
self.username = username
self.password = password
self.client = paramiko.SSHClient()
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.client.connect(self.LOCAL_IP, username=self.username, password=self.password)
self.sftp = self.client.open_sftp()
def std(self, message):
self.message = message
_in, out, err = self.client.exec_command(self.message)
exitcode = out.channel.recv_exit_status()
stdout = ''.join(out.read())
stderr = ''.join(err.read())
return stdout, stderr, exitcode
class Clarity(SSH_Connection):
pass
clarity = Clarity(LOCAL_IP='172.24.11.57', username='user', password='user')
现在,当我尝试通过Python提供的以下paramiko和SFTP选项调用批处理文件来执行此应用程序的打开操作时:
clarity.std('"C:\Program Files (x86)\Video Clarity\RTMonitor\RTMServer.bat"')
这将返回以下内容:
('\r\nuser@CV-S2042-RTM C:\\Users\\user>rtmserver 7 5 \r\n',
"'rtmserver' is not recognized as an internal or external command,\r\noperable program or batch file.\r\n",
1)
因此,我的Linux机器无法远程打开此应用程序
有什么想法如何解决这个问题?
最佳答案
因此,查看您的输出:
('\ r \ nuser @ CV-S2042-RTM C:\ Users \ user> rtmserver 7 5 \ r \ n',
““'rtmserver'无法识别为内部或外部命令,\ r \ n可操作程序或批处理文件。\ r \ n”,
1)
看来您正在尝试从rtmserver
运行C:\Users\user
除非您的rtmserver
环境变量中存在PATH
的路径,否则系统将假定可执行文件位于当前工作目录(即C:\Users\user
)中。
将C:\Program Files (x86)\Video Clarity\RTMonitor
添加到PATH
环境变量应该可以解决此问题。