求助:在Keyboard Maestro的AppleScript中调用剪贴板IP执行SSH
解决Keyboard Maestro中AppleScript调用剪贴板IP执行SSH的问题
我明白你的需求啦——想用剪贴板里的IP地址执行SSH命令,同时不想每次都新开Terminal窗口,也不想硬编码固定IP。咱们一步步来解决:
原脚本的问题
你原来的代码里有两个关键问题:
- 字符串拼接错误:
"ssh & the clipboard"把&写在双引号里了,这会让它变成命令的一部分,而不是AppleScript的拼接符号;另外ssh和IP之间没有空格,会导致命令格式无效。 - 默认新建窗口:
do script如果不指定执行窗口,默认会创建新窗口,这不是你想要的行为。
修正后的脚本(推荐版)
这个脚本会优先在已有的Terminal窗口里新建标签执行SSH命令,如果没有打开的窗口,才会新建窗口:
tell application "Terminal" activate -- 拼接SSH命令:注意ssh后面要加空格,避免和IP连在一起 set sshCommand to "ssh " & the clipboard -- 检查是否有已打开的Terminal窗口 if exists window 1 then -- 在现有窗口的新标签中执行命令 do script sshCommand in window 1 else -- 没有窗口的话,新建窗口执行 do script sshCommand end if end tell
可选:在当前标签执行命令
如果你想直接在Terminal当前激活的标签里执行(而不是新建标签),可以用这个版本:
tell application "Terminal" activate set sshCommand to "ssh " & the clipboard if exists window 1 then -- 在当前窗口的当前标签执行命令 do script sshCommand in current tab of window 1 else do script sshCommand end if end tell
使用说明
- 先把目标IP地址复制到剪贴板(随便从哪里复制都行)
- 在Keyboard Maestro里创建一个新动作,选择「Execute AppleScript」,把上面的代码粘贴进去
- 给这个动作设置一个快捷键触发(比如
Cmd+Shift+S),之后复制IP后按快捷键就能直接触发SSH连接啦
小提示(可选)
如果担心剪贴板内容不是合法IP,可以加个简单的格式校验:
tell application "Terminal" activate set clipboardContent to the clipboard -- 简单判断是否符合IP格式(仅作示例,非严格校验) if clipboardContent matches "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}" then set sshCommand to "ssh " & clipboardContent if exists window 1 then do script sshCommand in window 1 else do script sshCommand end if else -- 如果不是IP,弹出提示 display dialog "剪贴板里的内容不是有效的IP地址!" end if end tell
内容的提问来源于stack exchange,提问作者Vipin Choudhary
相关产品推荐
相关产品推荐

