用Python关闭Plink窗口

时间:2016-03-23 16:26:20

标签: python telnet plink

我想通过Telnet与数据记录器通信。因此,我编写了以下python脚本:

import subprocess

command ='plink.exe -telnet -P 23 12.17.46.06'

p = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, bufsize=1, shell=False)

answer =  p.communicate('command')[0]
print answer

通过运行脚本,会弹出一个plink-windows。 python脚本似乎等待在plink命令窗口内完成某些操作。通过手动关闭窗口,可以获得所需的答案"显示在python里面。

我正在寻找一个命令/程序来直接从python中关闭plink。关闭子进程似乎不够,因为在这种情况下,只有python和plink之间的通信才会被关闭而不是程序plink.exe本身。

任何帮助表示赞赏! 问候,菲尔

2 个答案:

答案 0 :(得分:2)

communicate()函数的文档说:等待进程终止。因此在plink.exe退出之前函数不会返回,因此你的程序没有得到输出到那时。

您应该添加关闭telnet连接的'command'内容。当远端关闭telnet连接时,plink.exe将退出,其窗口将关闭。如果您的telnet会话运行unix shell,您可以添加&#39 ;;出口'你的命令。

答案 1 :(得分:0)

您可以检查plink隧道中的任务是否已完成,然后执行 脚本中的taskkill

类似的东西,
    killProg = taskkill /f /fi "imagename eq plink.exe"
    p.communicate('killProg')[0]

这将在保持隧道打开以执行其他命令的同时终止plink。