我使用 ssh 网关,它使用 key-auth。这意味着我的工作站没有被键入我每天使用的任何服务器。我使用 ssh:// 处理程序,我在我的 PC 上有一个脚本可以使用 putty(单击链接,然后单击打开 putty 窗口进行粘贴)。我想用 applescript 做一些类似的事情,但甚至无法让基本的脚本工作。
有没有更简单的方法?我真的只需要能够将“ssh://root@ip:port”转换为“ssh root@ip -p port”(例如)并将其粘贴到活动的 iterm2 选项卡中。如果有更优雅的方式来做到这一点,我愿意接受建议。我发现有几十页跳过了这个想法,但我真的无法理解他们使用的 applescript(我似乎也无法重现它)。
编辑澄清:
我总是在 iterm 中打开一个到网关的 ssh 会话,在这里我保留了我正在做的各种事情的多个屏幕。理想情况下,我只想把它扔到我的剪贴板中,这样我就可以点击我的网关和 cmd+v。这比与 iterm 交互更容易,但是我无法围绕 AppleScript 来解析参数行。此外,我修改了 info.plist 以接受“ssh”作为方案,但还需要其他东西吗?
=------------------------=
这是我在继续搜索后得到的结果,虽然它在测试期间主要在 CLI 中工作(打开 script.app/ssh://root@127.0.0.1:22),但它不适用于我的浏览器。坦率地说,我真的不知道自己在做什么。
on open location this_URL
set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {"ssh://", ":"}
set preBuff to item 2 of the text items of this_URL
set prePort to item 3 of the text items of this_URL as integer
set preLine to "ssh " & prebuf & " -p " & prePort
set the clipboard to preLine
end open location
=------------------------=
我在这方面做了更多的工作,并且:
on open location this_URL
set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {"ssh://", ":"}
set preBuff to item 2 of the text items of this_URL
set prePort to item 3 of the text items of this_URL as integer
set preLine to "ssh " & preBuf & " -p " & prePort
-- debug dialog
display dialog the [preLine]
buttons("exit")
set the clipboard to preLine
end open location
-- debug dialog
display dialog the ["didn't run"]
buttons("exit")
在浏览器中单击 ssh:// 链接时将弹出“未运行”对话框,但是“打开位置”中包含的所有内容似乎都没有被触及。
编辑:我的 info.plist - http://pastebin.com/JgRps1B5