0

我运行 T-Plan 机器人,它连接到我的 Windows 机器并执行一些脚本。成功执行脚本后,我通过 pscp 将生成的 xml 文件导出到我的 linux 机器。

T-paln 机器人充当第 3 方免费软件,通过 Windows 机器上的 cmd 传递一些命令。这是通过在 t-plan 机器人上运行一个简单的批处理文件来实现的。但是,向 Windows 发送命令的脚本会根据一些明确声明的超时秒数断开自身连接。

我想编写一个 tcl 代码,在 linux 机器上启动这个应用程序,一旦命令生成成功的结果作为 xml 文件并在 linux 机器上接收,它应该检查指定目录中是否存在 xml 文件并终止应用程序权限在那一刻。我想要这个,因为下一个代码部分将解析这个收到的 xml 报告并执行其他操作。

我认为 tcl 中应该有一些类可以杀死任何环境中的进程/服务,这里我需要在 linux 中执行。

真诚地等待回复。在此先感谢

4

1 回答 1

0

要杀死同一台 Linux 机器上的进程,只要您有权这样做(即,您以同一用户身份运行),您可以执行以下任一操作:

package require Tclx
kill $processId

或者:

exec kill $processId

(前者不需要外部命令——它直接进行系统调用——但第二个不需要 Tclx pacakge。)

这两个都需要进程 ID

要测试文件是否存在,请file exists像这样使用:

if {[file exists $theFilename]} {
    puts "Woohoo! $theFilename is there!"
}

要杀死远程机器上的某些东西,您需要向该机器发送一个运行命令。也许像:

exec ssh $remoteMachine kill $remotePID

获得它$remotePID可能是“有趣的”,并且可能需要在您的整个系统设计中进行一些深思熟虑。如果从 Windows 调用到 Linux,请将 ssh 替换为 plink。如果换一种方式,你正在谈论做:

exec ssh $remoteMachine taskkill /PID $remotePID

这可能会变得非常复杂,我不确定您现在采用的方法是否正确。

于 2014-03-20T13:18:11.847 回答