Eu fiz algo parecido uma vez, em que sempre que uma unidade chamada de certa forma era montada, um script era disparado imediatamente para sincronizar o conteúdo de um conjunto de pastas para a unidade.
Para fazer algo semelhante aqui, o script precisaria se parecer com isso:
#!/bin/bash
if [ -d /Volumes/XYZ ];
then
echo “Ejecting XYZ!”;
umount /Volumes/XYZ
exit;
fi
Salve-o em algum lugar, seu diretório ~/bin/
se você tiver um, ou talvez ~/Library/Scripts/
, apenas lembre-se de onde.
A segunda parte do quebra-cabeça é o LaunchAgent que realmente manipulará o evento sempre que uma unidade for montada:
<?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>
Isso precisa ser salvo como .plist (com nome semelhante à string usada no lugar de "com.superuser.226504.example") e salvo em ~/Library/LaunchAgents
. Você pode carregá-lo a partir do terminal via launchctl load ~/Library/LaunchAgents/pathtoplist
ou sair / voltar a entrar e ele deve ser carregado se tudo estiver configurado corretamente.