我很难通过SSH从TCL控制台登录终端,并从该终端重新启动tcl脚本。为此,我使用exec命令,它确实执行。唯一的问题是它没有返回到父代码。
我有自动SSH登录,它可以在bash / csh终端上正常工作
但是从TCL控制台,发生以下情况
简单示例
exec ssh hostname pwd
puts "Done"
当我在TCL中执行此代码时,"完成"从来没有打印过。我只是得到了pwd的输出,那就是它。
我需要将SSH循环到多个终端并在硬件上运行TCL作业,但是在执行第一个SSH后循环会被卡住。
我在互联网上搜索答案,但我找不到任何答案。请帮忙。
答案 0 :(得分:0)
这里可能会遇到很多问题。使用显式命令(pwd)运行ssh通常默认不分配tty(ssh -T)并以非交互模式运行远程shell。并且从exec调用的命令的输出通常不会回显到标准输出,所以如果从脚本调用它,我不希望你看到输出。您必须打印exec的结果才能看到pwd命令的输出。此外,不同的shell启动脚本在远程主机上运行,具体取决于帐户设置的shell以及它是交互式还是非交互式shell。它可能是.bashrc,.bash_profile,.profile,.cshrc等,如果脚本在有tty时表现不同,那么它可以解释bash / csh shell和bash之间的不同行为。 TCL控制台。
无法访问您的系统,我很难排除故障。我会从这样的脚本开始:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="fakedata"/>
<xs:element type="xs:string" name="question1"/>
<xs:element type="xs:string" name="question2"/>
<xs:element type="xs:boolean" name="question3"/>
<xs:element type="xs:boolean" name="question4"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
{
"fakedata": "something..",
"question1": "test answer",
"question2": "a",
"question3": true,
"question4": false
}
然后我会尝试将-T更改为-t并再次尝试。如果“pwd”的输出出现在“result =”行之前,那么您可以告诉该命令正在将结果写入tty而不是标准输出,这是用于故障排除的有用信息。