使用Python从Linux执行窗口应用程序

时间:2018-11-14 10:30:06

标签: linux windows batch-file cmd paramiko

我正在尝试在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机器无法远程打开此应用程序

有什么想法要解决吗?

1 个答案:

答案 0 :(得分:0)

因此,查看您的输出:

  

('\ r \ nuser @ CV-S2042-RTM C:\ Users \ user> rtmserver 7 5 \ r \ n',    ““'rtmserver'不被识别为内部或外部命令,\ r \ n可操作程序或批处理文件。\ r \ n”,    1)

这似乎是您试图从public Data getDataByFilter(SearchDataRequest request) { String sql = buildSqlForRequest(request); return executeSql(sql); } 运行rtmserver

除非您的C:\Users\user环境变量中存在rtmserver的路径,否则系统将假定可执行文件位于当前工作目录(即PATH)中

在您的C:\Users\user环境变量中添加C:\Program Files (x86)\Video Clarity\RTMonitor应该可以解决此问题。