Come elencare gli UUID di interfaccia di rete?

2

Sto provando davvero a trovare un modo semplice per recuperare tutti gli UUID di rete sul mio Mac per poter fare un po 'di magia plistante.

Esiste un comando per fare una cosa del genere?

Se guardo il plist troverò per un'istanza "Service Order"

   ServiceOrder = Array {
         2AF2313D-AB7E-4FE7-91C3-XXXXXXXXXXXX
         9B976E4D-F7BE-428D-88C2-YYYYYYYYYYYY
         9A26C39B-8BD4-4562-9E0A-ZZZZZZZZZZZZ

Ma c'è un modo più semplice rispetto alla semplice scrittura di un lungo script che cancella le parti prima e dopo?

Tutti i computer che eseguono Yosemite.

Script finale - Grazie a @Asmus per aver fornito le risposte per farlo funzionare

#!/bin/sh
# Setting value on "SetUDIDSets" to define the "Sets" name as this will be different on each computer
SetUDIDSets=$(/usr/libexec/PlistBuddy -c "print :Sets" /Library/Preferences/SystemConfiguration/preferences.plist | perl -lne 'print $1 if /^    (\S*) =/')

IFS=$'\n'
    # Loops through the list of network services and sets Exclude Simple Hostnames to 1.
    for i in $(/usr/libexec/PlistBuddy -c "print :Sets:$SetUDIDSets:Network:Global:IPv4:ServiceOrder" /Library/Preferences/SystemConfiguration/preferences.plist | awk 'NR>2{ print l} {l=$0}' | perl -pe 's/^\s+//');
    do

# If the setting Exclude Simple Hostnames never has been touched we need to create this
    sudo /usr/libexec/PlistBuddy -c "add :NetworkServices:$i:Proxies:ExcludeSimpleHostnames integer 1" /Library/Preferences/SystemConfiguration/preferences.plist
    sudo /usr/libexec/PlistBuddy -c "set :NetworkServices:$i:Proxies:ExcludeSimpleHostnames 1" /Library/Preferences/SystemConfiguration/preferences.plist

    echo "Exclude Simple Hostnames is now set for $i" 

    done

unset IFS
defaults read /Library/Preferences/SystemConfiguration/preferences.plist
echo "We're done!"
    
posta vrklgn 03.03.2015 - 17:06
fonte

1 risposta

2

Prima di tutto, per ottenere gli UUID dei tuoi set di rete, usa PlistBuddy e perl:

 /usr/libexec/PlistBuddy -c "print :Sets" /Library/Preferences/SystemConfiguration/preferences.plist | perl -lne 'print $1 if /^    (\S*) =/'

questo dovrebbe restituire gli ID dei set di rete. Per ogni set puoi quindi ottenere il nome con

/usr/libexec/PlistBuddy -c "print :Sets:698F419D-326E-45E3-8BE2-B0742334DD62:UserDefinedName" /Library/Preferences/SystemConfiguration/preferences.plist 

dove, ovviamente, devi modificare l'UUID di conseguenza. Ora puoi stampare il ServiceOrder con:

/usr/libexec/PlistBuddy -c "print :Sets:698F419D-326E-45E3-8BE2-B0742334DD62:Network:Global:IPv4:ServiceOrder" /Library/Preferences/SystemConfiguration/preferences.plist

Se vuoi leggere il valore di "ExcludeSimpleHostnames", dovresti essere in grado di utilizzare

/usr/libexec/PlistBuddy -c "print :NetworkServices:69F7441B-BA1E-4DC3-B7DA-8D6302986F20:Proxies:ExcludeSimpleHostnames" /Library/Preferences/SystemConfiguration/preferences.plist 

ovviamente sostituendo questo UUID con uno valido da "ServiceOrder".

Aggiornamento:

non perdere che puoi anche impostare valori con PlistBuddy:

/usr/libexec/PlistBuddy -c "Set :NetworkServices:$serviceid:Proxies:ExcludeSimpleHostnames 1" /Library/Preferences/SystemConfiguration/preferences.plist
    
risposta data 03.03.2015 - 21:20
fonte

Leggi altre domande sui tag