Używanie skryptu do powiadamiania o włożeniu urządzenia pamięci masowej do komputera Mac

0

Jestem nowy na Macintoshu. Czy w systemie macOS można utworzyć określony „skrypt”, który powiadomi zarówno użytkownika, jak i administratora, za każdym razem, gdy dysk flash / osobiste urządzenie pamięci masowej zostanie podłączone do komputera Mac

jquiambao
źródło
Właściwie udało mi się obejść obejście. Teraz myślę, jak uruchomić skrypt, który utworzyłem po włożeniu dysku flash.
jquiambao

Odpowiedzi:

2

Ten niewielki fragment kodu Swift, choć nie jest skryptem, zgłasza wszelkie wstawienia dysków fizycznych lub wirtualnych. Może ci pomóc:

import Foundation
import DiskArbitration

let session = DASessionCreate(CFAllocatorGetDefault().takeRetainedValue())

DARegisterDiskAppearedCallback(
    session!,
    nil,
    { (disk, context) in
        if let name = DADiskGetBSDName(disk) {
            print("Disk inserted: " + String(cString: name))
        }
},
    nil)

DASessionScheduleWithRunLoop(session!, CFRunLoopGetMain(), CFRunLoopMode.defaultMode.rawValue)

RunLoop.main.run()
William T Froggard
źródło
Doceniam twoją pomoc, stary, jestem bardziej zainteresowany scenariuszem. Ale chcę wypróbować kod, który podałeś. nie mam pojęcia, jak mogę to uruchomić.
jquiambao
Powinieneś być w stanie uruchomić polecenie „szybkie” z wiersza poleceń, a macOS powinien zaoferować instalację narzędzi wiersza polecenia dla programistów. Następnie będziesz mógł uruchomić polecenie „szybkie”, a następnie po prostu skopiuj i wklej to w monicie, który możesz wypróbować.
William T Froggard,
lub po prostu biegnij xcode-select --installpierwszy
William T Froggard
Próbowałem już kodu i dostałem błądrepl.swift:10:12: error: initializer for conditional binding must have Optional type, not 'UnsafePointer<Int8>' if let name = DADiskGetBSDName(disk) { ^ repl.swift:16:60: error: use of unresolved identifier 'CFRunLoopMode' DASessionScheduleWithRunLoop(session!, CFRunLoopGetMain(), CFRunLoopMode.defaultMode.rawValue) ^~~~~~~~~~~~~ repl.swift:18:1: error: use of unresolved identifier 'RunLoop' RunLoop.main.run() ^~~~~~~
jquiambao
@jquiambao jaka wersja, jeśli używasz systemu macOS?
William T Froggard,