如果卷的名称为“XYZ”,则插入后立即卸载该卷

如果卷的名称为“XYZ”,则插入后立即卸载该卷

我有一个 USB 调制解调器,插入后安装为 XYZ(其中包含拨号器软件和自述文件)。为了使用它进行连接,我必须将其弹出,然后使用 ppp 拨号器进行连接。

假设它以 /Volumes/XYZ 名称安装

我想要做一些事情,比如如果我插入一个 USB 设备并且它以名称 XYZ 挂载,我希望它立即被弹出。

我怎么做?

答案1

我曾经做过类似的事情,每当安装以某种方式命名的驱动器时,就会立即触发一个脚本,将一组文件夹的内容同步到该驱动器。

为了在这里做类似的事情,脚本需要看起来像这样:

#!/bin/bash

if [ -d /Volumes/XYZ ];
    then
    echo “Ejecting XYZ!”;
    umount /Volumes/XYZ
    exit;
fi

将其保存在某个地方,~/bin/如果有的话,保存在您的目录下,或者也许~/Library/Scripts/,只记住在哪里。

难题的第二个部分是 LaunchAgent,它实际上会在驱动器安装时处理事件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.superuser.226504.example</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Path/To/Script/unmount-modem.sh</string>
    </array>
    <key>QueueDirectories</key>
    <array/>
    <key>StartOnMount</key>
    <true/>
    <key>WatchPaths</key>
    <array/>
</dict>
</plist>

需要将其保存为 .plist(名称类似于“com.superuser.226504.example”中所使用的字符串)并保存到~/Library/LaunchAgents。您可以通过终端加载它launchctl load ~/Library/LaunchAgents/pathtoplist,也可以注销/重新登录,如果一切配置正确,它应该会被加载。

答案2

您可以使用以下 AppleScript:

on adding folder items to this_folder after receiving added_items
    set the item_count to the number of items in the added_items

    if the item_count is greater than 1 then
        display dialog "Multiple additions, I can't handle that!"
    else
        set the volume_name_raw to (item 1 of the items in the added_items as text)
        set AppleScript's text item delimiters to ":"
        set volume_name to text item 1 of volume_name_raw as text
        if volume_name is "Carbon Copy Cloner" then
            do shell script "hdiutil detach '/Volumes/" & volume_name & "'"
        end if
    end if
end adding folder items to

基于 Apple 的文件夹操作“新项目警报”

在以下行中更改要弹出的卷的名称:

if volume_name is "Carbon Copy Cloner" then

要激活它:

  1. 打开/Applications/Utilities/AppleScript Editor并粘贴上面的脚本。
  2. 将其保存为脚本(例如eject.scpt~/Library/Scripts/Folder Action Scripts/
  3. 关闭 AppleScript 编辑器。
  4. 右键单击 Finder 中的任意文件夹,选择服务 » 文件夹操作设置
  5. 关闭工作表对话框。
  6. 查看启用文件夹操作
  7. 点击+左下角的按钮,然后Command-Shift-G在出现的文件对话框中按下 Enter /Volumes不要选择项目,只需按 OK
  8. 选择列表条目Volumes并单击+右侧列表下方的按钮。
  9. eject.scpt在工作表对话框中选择并单击
  10. 关闭文件夹操作设置

完毕!

相关内容