从TCLSH执行时无法退出SSH

时间:2018-06-14 23:12:04

标签: ssh tcl

我很难通过SSH从TCL控制台登录终端,并从该终端重新启动tcl脚本。为此,我使用exec命令,它确实执行。唯一的问题是它没有返回到父代码。

我有自动SSH登录,它可以在bash / csh终端上正常工作

但是从TCL控制台,发生以下情况

简单示例

exec ssh hostname pwd
puts "Done"

当我在TCL中执行此代码时,"完成"从来没有打印过。我只是得到了pwd的输出,那就是它。

我需要将SSH循环到多个终端并在硬件上运行TCL作业,但是在执行第一个SSH后循环会被卡住。

我在互联网上搜索答案,但我找不到任何答案。请帮忙。

1 个答案:

答案 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而不是标准输出,这是用于故障排除的有用信息。