Launchctl dice que plist no es válido, plutil dice que está bien

4

Estoy intentando que Launchd ejecute un script de shell cuando me uno a una nueva red WiFi. He creado este archivo plist (basado muy de cerca en esta respuesta del Superusuario ) en /Users/myname/Library/LaunchAgents/my.networkChangeListener.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<dict>
  <key>Label</key>
  <string>my.networkChangeListener</string>
  <key>LowPriorityIO</key>
  <true/>
  <key>ProgramArguments</key>
  <array>
<string>/Users/myname/bin/networkChangeListener/onNetworkChange.sh</string>
  </array>
  <key>WatchPaths</key>
  <array>
    <string>/etc/resolv.conf</string>
    <string>/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist</string>
    <string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

Mi usuario es el propietario del plist, y el grupo es "staff".

Cuando intento cargar el archivo ejecutando launchctl load ~/Library/LaunchAgents/my.networkChangeListener.plist , aparece un error que dice "Lista de propiedades no válida".

Sin embargo, cuando ejecuto plutil ~/Library/LaunchAgents/my.networkChangeListener.plist , devuelve "OK"

¿Cuál es el problema con mi archivo plist? ¿Es algo específico para launchd? Estoy completamente en un callejón sin salida por cómo depurar esto.

    
pregunta LiberalArtist 16.04.2015 - 03:06

2 respuestas

8

Las primeras líneas deben ser

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

A su archivo (así como al que está en la respuesta vinculada) le falta la parte <plist version="1.0"> .

    
respondido por el nohillside 16.04.2015 - 06:29
-1

Una lista totalmente en blanco se ve así:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>

Utilizo PlistEdit Pro cuando tengo que hacer muchos cambios, ya que es fácil cometer errores.

    
respondido por el Ronanoc 16.04.2015 - 09:55

Lea otras preguntas en las etiquetas