¿Cómo puedo alternar los servicios de red con un script?

1

Actualmente puedo hacer esto solo por conexión utilizando este script:

property status : "none"
property val : "none"

on get_status()
    set status to do shell script "sudo networksetup -getnetworkserviceenabled Ethernet" as string
end get_status

get_status()

if status is "Enabled" then
    set val to "off"
else
    set val to "on"
end if

do shell script "sudo networksetup -setnetworkserviceenabled Ethernet " & val

get_status()
display dialog "Status: " & status with title "Network Toggle" buttons {"OK"} default button 1

Pero recientemente estoy obteniendo redes de diferentes fuentes y me gustaría tener una secuencia de comandos con disponibilidad de conmutación para todas las conexiones activas (todas activadas o desactivadas).

¿Alguna idea de cómo podría lograr esto?

    
pregunta Jan 22.02.2016 - 21:46

1 respuesta

0

Use la opción -listallnetworkservices para obtener todos los servicios.

tail -n +2 para eliminar la primera línea que contiene "Un asterisco (*) indica que un servicio de red está deshabilitado".

sed 's/^*//' para eliminar el carácter de asterisco al principio de cada línea

while read thisName to loop

El guión:

if get_status() is "Enabled" then
    set val to "off"
else
    set val to "on"
end if
do shell script "networksetup -listallnetworkservices | tail -n +2 | sed 's/^*//' | while read thisName; do networksetup -setnetworkserviceenabled  \"$thisName\" " & val & "; done" with administrator privileges
display dialog "Status: " & (get_status()) with title "Network Toggle" buttons {"OK"} default button 1

on get_status()
    set status to do shell script "networksetup -getnetworkserviceenabled Ethernet"
end get_status

sudo en un comando do shell script no funciona en mi sistema, uso administrator privileges .

    
respondido por el jackjr300 23.02.2016 - 19:49

Lea otras preguntas en las etiquetas