我正在尝试在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环境变量应该可以解决此问题。

09-13 05:55