【问题标题】:Open xterm telnet connection (Mac OS X)打开 xterm telnet 连接 (Mac OS X)
【发布时间】:2012-06-27 17:50:55
【问题描述】:

我已经尝试了几个小时来正确地编写这个脚本并且已经走了很远,但是我被传递给 X11 xterm 窗口的命令卡住了。

我需要连接到 xterm telnet 服务器。这是正常程序:

  • 打开终端
  • 输入命令:xterm -fa Monaco -fs 12(这会打开一个 X11 窗口,字体更大)
  • 在新的 xterm 窗口中输入:telnet -l username server ip
  • 这将打开 telnet 连接并提示输入密码

因为一些没有终端知识的用户必须能够访问这个连接,所以我尝试了几种方法来编写一个可以在 Mac 上运行的脚本。并打开连接,让用户在打开的 telnet 窗口中工作。我最终为此使用了 AppleScript,并编写了以下脚本:

tell application "X11"
    activate
end tell

tell application "System Events"
    tell process "X11"
        tell menu bar 1
            tell menu "Applications"
                click menu item "Terminal"
                tell window 1
                    run
                    do script "xterm -fa Monaco -fs 12"
                    delay 2
                    do script "telnet -l meister 192.169.25.1"
                end tell
            end tell
        end tell
    end tell
end tell

但不幸的是,这不起作用。它只打开一个 X11 xterm 窗口,没有更大的字体,也没有终端命令,它只是一个空窗口。

你们中是否有人知道我可以如何更改脚本以使其正常工作,或者也许有一种方法可以使用其他类型的脚本而不是 AppleScript 来做到这一点?

非常感谢您提前提供的帮助!

【问题讨论】:

  • 你为什么用终端打开xterm?为什么不在终端应用程序中创建 telnet 会话?如果你这样做了,有几种方法可以创建在终端中打开 telnet 会话的快捷方式,你可以安排字体或其他外观设置以你想要的方式进行设置。
  • 嗨,克里斯,我没有使用终端,因为当我尝试连接到服务器时它会导致错误:
  • 这就是我得到的:“Fehler beim Oeffnen von /diwaprg/ariadne/v3term/xterm-256color> 2 -Fehler beim Oeffnen von /diwaprg/ariadne/v3term/xterm -256color> 2 AMASK : Datei /gewa/diwaprg/ariadne/v323tc/xterm-256color kann nicht eroeffnet werden ! AMASK : 可变术语richtig gesetzt ? DIWA: Fehler nach Aufruf MEDIWA (1) DIWA : /diwaprg> MANDANT : /GEWA-DB> AMASKDIR: /diwaprg/amd> 连接被外部主机关闭。" 使用 xterm 可以工作 ;)
  • @abarnert,对。该错误意味着远程主机上未安装 xterm-256color terminfo 文件。最好的解决方案是安装它们。除此之外,将TERM 环境值的值自定义为安装在远程主机上的 值。最可靠的方法是在远程主机上配置 shell 以检查 xterm-256color 并将其映射到存在的 shell。最简单的解决方案是在本地主机上调用 telnet 时手动设置环境值。为方便起见,您可以将其包装在本地 shell 启动脚本中的 shell 函数中。
  • 注意(因为很多人都搞错了):避免使用xterm-color,因为它代表了 xterm 的旧分支,它与现代 xterm 和终端有一些不兼容。如果未安装xterm-256color,则优先选择xterm-88colorxterm-16colorxterm。仅当您在 Lion 10.7 之前的 OS X 上使用终端时才使用 xterm-colorxterm-color 更适合 10.7 之前的旧版本终端,但更适合 10.7 及更高版本)。

标签: macos applescript x11 telnet xterm


【解决方案1】:

首先,要启动 xterm,只需这样做:

do shell script "xterm -fa Monaco -fs 12 -wf"

如果需要,这将自动启动 X11。

根据您的系统,/usr/X11/bin 可能不在路径上,因此您可能希望这样做:

do shell script "/usr/X11/bin/xterm -fa Monaco -fs 12 -wf"

如果您希望 xterm 运行命令而不是仅仅打开 shell,请使用 -e 参数:

do shell script "/usr/X11/bin/xterm -fa Monaco -fs 12 -e telnet -l meister 192.169.25.1"

如果 telnet 命令失败,xterm 窗口将立即关闭;要调试它,请在“-e”之前添加一个“-hold”。

既然你问的是“一些其他类型的脚本而不是苹果脚本”,同样的事情显然是 bash 中的一个单行,两个用 shebang:

#!/bin/sh
/usr/X11/bin/xterm -fa Monaco -fs 12 -e telnet -l meister 192.169.25.1

如果将其保存为“doit”和“chmod +x doit”,则可以从终端以“./doit”的形式运行它。

或者,如果您希望它在 Finder 中可双击,请将其重命名为“doit.command”。

【讨论】:

  • 在雪豹上我得到这个错误:错误“sh: xterm: command not found” number 127
  • 嘿,谢谢你的帮助,这很有趣,只需要一行代码!我尝试了几个小时和几行来写出我的非工作脚本;)
  • 我只有一个问题,也许我做错了什么。苹果脚本给出错误:“sh:xterm:找不到命令”/另一个脚本(我将其保存为文件名nd doit.command)给出错误“文件无法执行,因为您没有适当的权限” 但在“获取信息”下,我有读/写访问权限,对不起,我想这可能是一个“愚蠢”的问题,但我自己找不到解决方案,我在谷歌上也找不到任何东西。非常感谢您的帮助!
  • 您需要 xterm 在您的路径上才能正常工作。根据您安装 X11 或配置系统的方式,这可能不是真的。因此,您可能会更安全地明确执行“/usr/X11/bin/xterm”。我会编辑答案。
  • 同时,我相信从 Finder 将脚本作为 .command 文件运行,您仍然需要具有执行权限(不仅仅是读取和写入),就像从命令行运行它一样.我不知道如何在 Finder 中进行设置,但是从命令行中,它是相同的“chmod +x doit.command”。
【解决方案2】:

试试:

tell application "X11"
    activate
    tell application "System Events" to tell process "X11"
        click menu item "Terminal" of menu 1 of menu bar item "Applications" of menu bar 1
        delay 0.5
        keystroke "xterm -fa Monaco -fs 12"
        delay 0.5
        keystroke return
        delay 0.5
        keystroke "telnet -l meister 192.169.25.1"
        delay 0.5
        keystroke return
    end tell
end tell

【讨论】:

  • 这是一个坏主意,原因有很多。例如,如果 X11 尚未运行,激活它会创建一个默认的 xterm 窗口,之后您将创建第二个窗口,同时保持原来的打开状态。如果启动时间超过 0.5 秒,则命令的其余部分将失败。同样,如果 xterm 需要超过 0.5 秒才能启动并抓取密钥,则 telnet 将转到终端窗口。有时无法绕过 UI 脚本和随之而来的问题,但在这种情况下,有许多更好的选择。
  • 优点。我使用 GUI 是因为 X11 不可编写脚本。我应该先检查终端。 +1
  • 是的,xterm 不可编写脚本对我来说也是一个大问题,因为起初我不明白为什么我的命令不起作用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 2020-11-17
  • 2012-03-12
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多