1

我使用 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

4

1 回答 1

0

我现在实际上已经让这个工作了,使用这个:

on open location test
    if test contains "rm" then --shitty sanitization
        display dialog the ["Link may be malicious"] --debug
    else
        set oldDelims to AppleScript's text item delimiters
        set AppleScript's text item delimiters to {"ssh://", ":", "/"}
        set preHost to item 2 of the text items of test
        set prePort to item 3 of the text items of test as integer
        set final to "ssh " & preHost & " -p " & prePort
        set the clipboard to final
        display dialog the [final] --debug
    end if
end open location

我不知道为什么一个工作而另一个没有,我只能猜测它没有通过一些错误。最终结果:

ssh://root@127.0.0.1:22/(ex)作为“ssh root@127.0.0.1 -p 22”被放置在剪贴板中

所以在大多数情况下,这已经解决了(我只是不知道为什么)。

于 2013-03-04T07:31:00.013 回答