我一直试图让这个脚本正常工作几个小时并且相当远,但是我被困在将命令传递到X11 xterm窗口。
我需要连接到xterm telnet服务器。这是正常的程序:
xterm -fa Monaco -fs 12
(这将打开一个X11窗口,字体更大)telnet -l username server ip
因为一些没有终端知识的用户必须能够访问此连接,我尝试了几种编写可在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?
非常感谢您的帮助!
答案 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