¿Cómo evitar la solicitud de contraseña en el terminal?

2

Así que a veces mi Mac pierde su conexión a Internet.

Cuando estoy delante de él físicamente puedo usar el terminal y hacer lo siguiente para repararlo:

networksetup -setnetworkserviceenabled ethernet off

escriba mi contraseña y luego:

networksetup -setnetworkserviceenabled ethernet on

y escriba mi contraseña de nuevo.

El problema es que la máquina aloja varios servidores y necesito que se ejecuten incluso cuando no estoy físicamente presente. Así que quería ejecutar un script diario que haría esto cuando no esté presente y asegurarme de que la conexión se reinicie al menos una vez al día. Pero como no he encontrado una manera de incluir mi contraseña en la línea de comandos, no puedo hacer eso.

Entonces, mi pregunta es: ¿es posible hacer lo que describí?

    
pregunta NicolasPP 28.04.2016 - 02:25

2 respuestas

3

Bien, gracias Batman por sugerirte editar el archivo sudoer. En lugar de crontab o launchd para programarlo una vez al día (lo cual no era lo suficientemente bueno de todos modos), en lugar de eso escribí ese manuscrito para hacerlo más regularmente y hasta ahora parece que está funcionando:

repeat
    repeat
        try
            do shell script "ping -t 15 8.8.8.8"
            exit repeat
        on error
            display notification "Reconnection attempt"
            do shell script "sudo networksetup -setnetworkserviceenabled ethernet off"
            do shell script "sudo networksetup -setnetworkserviceenabled ethernet on"
            delay 9
            display notification "Connection should be established"
        end try
    end repeat
    delay 5
end repeat

Estoy agregando más detalles: lo exporté como una .app y luego edité la lista con las líneas:

<key>LSBackgroundOnly</key>
<string>1</string>

Para hacerlo invisible cuando se ejecuta (sin icono de base) y finalmente lo hice al iniciar sesión.

    
respondido por el NicolasPP 16.08.2016 - 13:38
1

sudo le permite ejecutar un comando con un nivel de permiso elevado. Puede editar el archivo sudoers ejecutando

sudo visudo

Una forma de hacer esto es primero agregar una línea a su archivo sudoers que permita que los comandos listados se ejecuten sin una contraseña. Al agregar el comando específico a su archivo sudoers, puede permitir que los comandos deseados se ejecuten sin contraseña. Puede hacer esto ingresando las siguientes 2 líneas a su archivo sudoers (el archivo que se abre cuando ejecuta "sudo visudo"):

  

usuario ALL = (ALL) NOPASSWD: / usr / sbin / networksetup -setnetworkserviceenabled ethernet en   usuario ALL = (ALL) NOPASSWD: / usr / sbin / networksetup -setnetworkserviceenabled ethernet desactivado

con "usuario" reemplazado por tu nombre de usuario.

Luego, como usuario, para ejecutar algo a una hora regular, puede usar crontab

  

crontab -e

y agregue las líneas:

  

0 1 * * * sudo networksetup -setnetworkserviceenabled ethernet off & & sudo networksetup -setnetworkserviceenabled ethernet en

que aplicará este reinicio a la 1 AM todos los días.

Otra solución: Agregue los comandos directamente a crontab de la raíz:

  

sudo -s

     

crontab -e

Luego ingresa la línea

  

0 1 * * * networksetup -setnetworkserviceenabled ethernet off & & networksetup -setnetworkserviceenabled ethernet en

y guardar y salir.

Es posible que desee poner esto en algún tipo de secuencia de comandos que le notifique que la red se ha reiniciado correctamente (por ejemplo, con un correo electrónico o algo así) para que esté seguro de que funcionó.

Alternativamente, puedes usar una secuencia de comandos launchd.

    
respondido por el Batman 28.04.2016 - 03:05

Lea otras preguntas en las etiquetas