Come si stampa il file UUID del gruppo di volumi logici su file?

3

Sto tentando di automatizzare l'acquisizione del LVGUUID e di stamparlo come una stringa in un file di testo, o meglio collegarlo in pipe ad altri comandi. Tutto quello che posso fare adesso è diskutil coreStorage list e quindi copiare / incollare l'UUID secondo necessità. C'è un modo più veloce per farlo?

    
posta Christian 07.08.2017 - 19:36
fonte

1 risposta

2

Nota: questa risposta è solo un esempio di codice in quanto ho solo un Core Storage Volume da testare, tuttavia, se ce n'è più di uno, il comando awk potrebbe essere modificato per adattarsi di conseguenza. Sebbene senza l'output di più volumi di memoria core, non posso dare un esempio.

Se è Logical Volume Group UUID , puoi utilizzare l'esempio seguente:

$ lvguuid="$(diskutil coreStorage list | awk '/Logical Volume Group/{print $5}')"
$ echo "$lvguuid"
696AD841-1F53-4D33-9496-3E36D33AB270
$ 

Nel comando awk , puoi sostituire Logical Volume Group con Physical Volume , Logical Volume Family e modificare $5 a seconda dei casi. In base all'ordine della stringa di ricerca mostrata in questa riga, sarà $5 , $4 , $5 .

Per Logical Volume , dovrai utilizzare un regex , come nell'esempio seguente:

lvuuid="$(diskutil coreStorage list | awk '/Logical Volume [A-F0-9]{8}-/{print $4}')"

Informazioni su regex :

  • Logical Volume [A-F0-9]{8}-

    • Logical Volume corrisponde ai caratteri Logical Volume letteralmente (distinzione tra maiuscole e minuscole).
  • [A-F0-9]{8} - Trova un singolo carattere presente nell'elenco sotto.

    • {8} Quantifier - Corrisponde esattamente a 8 volte.
    • A-F un singolo carattere nell'intervallo compreso tra A (indice 65) e F (indice 70) (distinzione tra maiuscole e minuscole).
    • 0-9 un singolo carattere nell'intervallo compreso tra 0 (indice 48) e 9 (indice 57) (distinzione tra maiuscole e minuscole).
    • - corrisponde al carattere - letteralmente (distinzione tra maiuscole e minuscole).

Quindi, nel mio esempio awk corrisponde a Logical Volume 38712F52- e restituisce:

38712F52-5967-4A49-87D6-C66D4B199F28

Gli esempi precedenti impostano una variabile che può essere chiamata dalla riga di comando o script , tuttavia, se si è l'output a un file , quindi utilizza il seguente esempio:

diskutil coreStorage list | awk '/Logical Volume Group/{print $5}' > /path/to/filename

Sul mio sistema ecco l'output del comando diskutil coreStorage list su un'unità flash USB crittografata:

$ diskutil coreStorage list
CoreStorage logical volume groups (1 found)
|
+-- Logical Volume Group 696AD841-1F53-4D33-9496-3E36D33AB270
    =========================================================
    Name:         Encrypted
    Status:       Online
    Size:         15661490176 B (15.7 GB)
    Free Space:   16777216 B (16.8 MB)
    |
    +-< Physical Volume E0E76F6B-A4E2-466D-B8E5-D5977ECD0522
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk3s2
    |   Status:   Online
    |   Size:     15661490176 B (15.7 GB)
    |
    +-> Logical Volume Family EAF4984B-94C8-49B6-BCC6-76A8724E04D2
        ----------------------------------------------------------
        Encryption Status:       Unlocked
        Encryption Type:         AES-XTS
        Conversion Status:       Complete
        Conversion Direction:    -none-
        Has Encrypted Extents:   Yes
        Fully Secure:            Yes
        Passphrase Required:     Yes
        |
        +-> Logical Volume 38712F52-5967-4A49-87D6-C66D4B199F28
            ---------------------------------------------------
            Disk:               disk4
            Status:             Online
            Size (Total):       15325941760 B (15.3 GB)
            Size (Converted):   -none-
            Revertible:         Yes (unlock and decryption required)
            LV Name:            Encrypted
            Volume Name:        Encrypted
            Content Hint:       Apple_HFS
$ 
    
risposta data 07.08.2017 - 20:11
fonte

Leggi altre domande sui tag