打开xterm telnet连接(Mac OS X)

时间:2012-06-26 11:59:40

标签: macos applescript x11 telnet xterm

我一直试图让这个脚本正常工作几个小时并且相当远,但是我被困在将命令传递到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窗口,没有更大的fonface,没有终端命令,它只是一个空窗口。

您是否有人知道如何更改脚本以使其正常工作,或者可能有一种方法可以使用其他类型的脚本而不是AppleScript?

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

首先,要启动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窗口将立即关闭;调试它,添加" -hold"之前" -e"。

因为你问过"其他类型的脚本而不是苹果脚本",同样的事情显然是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"。

答案 1 :(得分:-1)

尝试:

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