AlfredWorkFlow能够高度自定义,能够经过它的一些功用合作编写的脚本,来优化日常的工作流程。之前注册了VPS玩,用来做署理和整一些服务端的小服务,发现每次登录都比较繁琐,就想到用AlfredWorkFlow来简化。
刚好最近的ChatGPT比较火,就用ChatGPT试了下,发现仍是挺有协助的。

经过ChatGPT查询完成方法

发问:创立一个Alfred的WorkFlow, 用来翻开iTerm2而且主动登录VPS,VPS的IP是xxx.xxx.xxx.xxx,端口是XXXX,登录时需求输入暗码。

ChatGPT答复:

咱们需求运用AppleScript来完成这个功用。同时,为了主动输入暗码,咱们能够运用expect脚本。
请依照以下进程操作:
1. 保证你现已装置了expect工具(假如没有装置,请运用Homebrew装置)。然后在终端中运用以下指令测试一下expect是否可用:`which expect`
   假如成功装置了expect,该指令将返回类似于`/usr/local/bin/expect`的途径;不然,你需求先装置expect。
2. 翻开Alfred的Workflows设置页面,点击左下角的“+”按钮,挑选“Blank Workflow”新建一个workflow。
3. 点击右上方的“Triggers”选项卡,然后点击左边的“+”按钮,挑选“Hotkey”,设置一个快捷键触发此workflow。
4. 点击右上方的“Actions”选项卡,然后点击左边的“+”按钮,挑选“Run Script”。
5. 在“Language”选项中挑选“/bin/bash”。
6. 将以下脚本粘贴到“Script”选项卡中,并替换IP地址和端口号:
   #!/bin/bash
   # 发动Iterm2运用
   osascript -e 'tell application "iTerm2" to activate'
   # 运用expect主动输入暗码
   /usr/local/bin/expect <<EOD
   spawn ssh root@xxx.xxx.xxx.xxx -p xxxx
   expect "password:"
   send "your_password_here\r"
   interact
   EOD
   留意将`your_password_here`替换为你VPS的root暗码。
7. 点击右上角的“Save”按钮保存workflow。
现在,当你按下快捷键时,Alfred将主动翻开Iterm2运用,并经过ssh登录到你的VPS的root账号。同时,expect脚本将主动输入暗码并完成登录进程。

这个答复中的第三步有点问题,实践没有“Triggers”选项卡。我自己创立了一个WorkFlow而且把它的脚本复制了过去。可是照做后报错:execution error: 不能取得“application "iTerm2"”。 (-1728)

我持续发问:呈现报错:execution error: 不能取得“application “iTerm2″”。 (-1728), 有其它方法吗?

ChatGPT答复:

假如你运用 `osascript` 指令时报错说“无法取得运用程序”,或许是由于该运用程序的称号不正确或您没有权限拜访该运用程序。请保证运用程序的姓名正确且你有满足的权限翻开它。
假如你确定运用程序的称号正确且具有恰当的权限,则能够测验运用运用程序的 Bundle Identifier。Bundle Identifier 是唯一标识运用程序的字符串,能够经过以下方法找到:
1. 在 Finder 中,找到运用程序的 .app 文件。
2. 右键单击 .app 文件,挑选“显现包内容”。
3. 在新翻开的窗口中,找到 Contents 文件夹。
4. 找到 Info.plist 文件并用文本编辑器翻开。
5. 找到 `<key>CFBundleIdentifier</key>` 标记,下面的字符串就是运用程序的 Bundle Identifier。
然后,你能够运用如下指令来发动运用程序:
osascript -e 'tell application id "BUNDLE_IDENTIFIER" to activate'
将 `BUNDLE_IDENTIFIER` 替换为运用程序的 Bundle Identifier。
希望这能够处理你的问题,假如还有其他问题,请告知我。

按操作把运用名改为BUNDLE_IDENTIFIER后就能够正常工作了。可是这部分把暗码硬编码在了脚本里面,不是太适宜,就想到经过验证证书的方法来登录VPS。 咱们能够经过此指令来装备:ssh-copy-id -p you_port -i ~/.ssh/id_rsa.pub root@you_ip,由于装备后不需求输入暗码了,就从头发问。

发问:怎么经过指令行或者脚本操控翻开iTerm2, 并主动履行指令:ssh root@you_ip -p you_port
ChatGPT答复:

你能够经过脚本操控翻开 iTerm2 并主动履行指令。以下是一个示例 bash 脚本,它将翻开 iTerm2,并在新标签页中履行 `ssh root@you_ip -p you_port` 指令:
#!/bin/bash
osascript <<END
tell application "iTerm2"
    create window with default profile
    tell current session of current window
        write text "ssh root@you_ip -p you_port"
    end tell
end tell
END
这个脚本运用 AppleScript 和 `osascript` 指令与 iTerm2 进行通讯。它首先告知 iTerm2 创立新窗口,并在当时窗口的一个新标签页中履行 `ls -la` 指令。
你能够经过修正 `write text` 行来履行不同的指令。
要运转该脚本,请将其保存为文件(例如 `test.sh`),并运用终端指令运转:
bash test.sh
假如一切都设置正确,则 iTerm2 将在新窗口中翻开,并主动履行指定的指令。
留意: 在macOS10.14 Mojave或更高版本中,您需求前往“体系偏好设置”>“安全性和隐私”>“隐私”选项卡,并保证已将您的终端运用程序添加到“完全磁盘拜访权限”列表中,才能够在终端中以脚本方法发动您的运用程序。

没想到ChatGPT重生成了一个不同的脚本,复制过去后发现能正常运转,到此一键翻开iTerm2并主动登录VPS的wofkflow就开发完成了。

总结

从最近的运用来看,在开发这一块,ChatGPT生成的结果看起来是那么回事,可是生成的代码罕见能直接就拿去用的。不过对启发咱们的思维,学习和了解陌生领域非常有协助。我现在用的是ChatGPT3.5的API,ChatGPT4更牛,可是需求请求,现已请求ChatGPT4的API权限一个多月了,还没有得到任何回复,期望能提前经过请求。