Como listar UUIDS da interface de rede?

2

Estou tentando muito encontrar uma maneira simples de buscar todos os UUIDS de rede no meu Mac para poder fazer alguma mágica.

Existe um comando para fazer uma coisa dessas?

Se eu olhar na lista, vou encontrar uma instância "Ordem de Serviço"

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

Mas existe uma maneira mais simples do que escrever um longo script excluindo as partes antes e depois?

Todos os computadores executando o Yosemite.

Script final - Agradecemos a @Asmus por fornecer respostas para que este funcione

#!/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!"
vrklgn
fonte
Dependendo do que você deseja fazer no final, networksetup -listnetworkserviceorderajudaria? Ele não retorna os UUIDs, mas imprime bem as informações e networksetupé a ferramenta para ativar / desativar as configurações de rede.
Asmus
@vrklgn adicione o nome e o caminho do plist.
precisa saber é o seguinte
@Asmus - Sim, mas para acessar "Excluir Hostnames Simples" Eu vou ter que fazer alguma magia negra no arquivo .plist Temo: /
vrklgn
@klanomath - / Library / Preferences / SystemConfiguration / Preferences.plist
vrklgn #

Respostas:

2

Primeiro de tudo, para obter os UUIDs dos seus conjuntos de rede, use PlistBuddy e perl:

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

isso deve retornar os IDs dos conjuntos de rede. Para cada conjunto, você pode obter o nome com

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

onde, é claro, você deve alterar o UUID de acordo. Agora, você pode imprimir o ServiceOrder com:

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

Se você quiser ler o valor para "ExcludeSimpleHostnames", poderá usar

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

enquanto, é claro, substituindo esse UUID por um válido do "ServiceOrder".

Atualizar:

não perca que você também pode definir valores com o PlistBuddy:

/usr/libexec/PlistBuddy -c "Set :NetworkServices:$serviceid:Proxies:ExcludeSimpleHostnames 1" /Library/Preferences/SystemConfiguration/preferences.plist
Asmus
fonte
Obrigado @Asmus, vou aplicar o meu roteiro final como uma resposta acima, bem como para as pessoas na mesma situação para copiar, mas esta é a resposta correta para a pergunta feita :)
vrklgn