首页 > 解决方案 > 从 Perl 脚本打开新终端窗口并执行 SSH 命令

问题描述

我有一个当前的 perl 脚本,我正在 cygwin 的 Windows 机器上执行,它正在打开一个新的 cygwin 终端窗口并 ssh 进入远程机器。

试图在 mac 上复制 mintty 命令。

if ($noexec) {
    system("echo mintty -s 160,40 $cursor -o 
    BackgroundColour=$color -o 
    Title='\"$title\"' -e ssh $url \&");
} else {
    system("mintty -s 160,40 $cursor -o BackgroundColour=$color -o 
    Title=\"$title\" -e ssh $url \&");
}

标签: macosperlssh

解决方案


这是您的代码的简单翻译,以使用 Applescript 执行任务,如建议的副本在新的 Mac OS X 终端窗口中运行命令中所述

if ($noexec) {
    system(qq{echo osascript -e 'tell application "Terminal" to do script "ssh $url \& "'});
} else {
    system(qq{osascript -e 'tell application "Terminal" to do script "ssh $url \& "'});
}

在后台运行ssh命令似乎是一件很奇怪的事情。可能您应该替换\&; exit.

我不确定这些mintty选项是什么意思(我想将几何设置为 160x40 并选择一个特定的光标?)所以我没有尝试实现这些。例如, https: //superuser.com/questions/1188772/mac-command-to-change-the-background-color-in-a-terminal 展示了如何通过 Applescript 在终端中设置背景颜色。

如果mintty或 Windowsssh真的接受要连接的 URL(ssh://username@hostname可能是?),您将不得不将其分开并仅提取 U*x 可接受的参数ssh(例如username@hostname没有ssh://协议说明符)。


推荐阅读