Automator wifi 特定备份

Automator wifi specific backup

我想在连接到我的家庭网络时自动 运行 将我 Mac 上的某些文件夹每周备份到云端。

场景:

Check wifi network name

If 'home' then perform backup

else exit

我创建了一个日历事件来触发自动化脚本。

我目前有两个 bash 脚本

  1. 确定我连接的wifi网络
  2. 执行备份(使用 rclone)

我纠结的部分是 If、Then 和 else 部分。

Bash 脚本 1:

/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk -F: '/ SSID/{print }'

尝试使用 applescript:

on run {input, parameters}
    
    if input is not ("home") then error number -128
    
    return input
    
end run

Bash 应该 运行 检测家庭网络的脚本:

/usr/local/Cellar/rclone/1.52.1/bin/rclone copy "Source" Remote:folder

两个 bash 脚本都可以工作,但我被困在有条件的部分......非常感谢收到任何帮助。

运行你的命令,我得到以下

❯ /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk -F: '/ SSID/{print }'
 Home

您会注意到在 Home 之前有一个 tiiiiiiiiny space。正文其实是<space>Home.

您的问题出在 awk 命令中。

当您将文本 SSID: Home 拆分为 : 时,</code> 变为 <code> SSID</code> 变为 <code> Home。 (再次注意 spaces)。

您对 applescript 的输入正在寻找 HomeHome 不匹配 Home.

注意间距和大小写。


其次,input是一个list,不是字符串。所以 input is not ("home") 将始终 运行 因为你将它与字符串进行比较。

如果您想将 inputstring 进行比较,例如 home.

,则必须将其类型转换为 string
on run {input, parameters}
    if (input as string) is " home" then
        tell application "System Events" to display dialog "You are home."
    end if
    return input
end run