我运行T-Plan机器人,它连接到我的Windows机器并执行一些脚本。 成功执行脚本后,我将生成的xml文件通过pscp导出到我的linux机器。
T-paln机器人充当第三方免费软件,通过Windows机器上的cmd传递一些命令。 这是通过在t-plan robot上运行一个简单的批处理文件来实现的。但是,向Windows发送命令的脚本会根据一些明确声明的超时秒断开连接。
我想写一个tcl代码在linux机器上启动这个应用程序,一旦命令生成了一个成功的结果作为xml文件并在linux机器上收到,它应该检查指定目录中是否存在xml文件并终止我想要这个,因为下一个代码部分会解析这个收到的xml报告并执行其他操作。
我认为tcl中应该有一些类可以杀死任何环境中的进程/服务,这里我需要在linux中执行它。
真诚地等待回复。谢谢提前
答案 0 :(得分: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
这可能变得非常复杂,我不确定你现在采取的方法是否正确。