launchctl no inicia el demonio cntlm

2

He instalado cntlm en osx usando la fórmula homebrew .

Luego copié el archivo .plist y comencé el demonio:

sudo cp -fv /usr/local/opt/cntlm/*.plist /Library/LaunchDaemons
sudo chown root /Library/LaunchDaemons/homebrew.mxcl.cntlm.plist

Pero después del reinicio, el demonio no se está ejecutando. He intentado ejecutarlo manualmente con

sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.cntlm.plist

pero su salida es

/Library/LaunchDaemons/homebrew.mxcl.cntlm.plist: Operation already in progress

También he comprobado el archivo plist con plutil -linty está bien.

Esta es la fuente de /Library/LaunchDaemons/homebrew.mxcl.cntlm.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">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>homebrew.mxcl.cntlm</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/opt/cntlm/bin/cntlm</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/var/null</string>
    <key>StandardErrorPath</key>
    <string>/var/null</string>
  </dict>
</plist>

¿Sabes por qué sucede esto y cómo ejecutarlo correctamente como demonio?

lifeisfoo
fuente
Por favor, ¿puedes consultar system.logcon Console.app para ver los mensajes? launchdnormalmente es bueno para registrar errores útiles y advertencias sobre por qué un trabajo no se está ejecutando. ¿Ves el trabajo registrado como iniciado?
Graham Miln
No, no hay ningún registro de inicio. Pero si trato de iniciarlo manualmente, dice: "Operación ya en progreso". También he comprobado ps auxsi cntlm se está ejecutando, pero no existe ningún proceso. Ver también github.com/Homebrew/homebrew/issues/44741
lifeisfoo
Me gustaría cambiar stdout y err a archivos y ver si hay algo en ellos
Mark
Intente poner esto ~/Library/LaunchAgentsy cambie Salida y error para ~/Library/Logs/a_log_file_appropriateque pueda obtener alguna información en lugar de nula.
Jahhein

Respuestas:

2

Revisé la información de homebrew y dice lo siguiente:

  • Editar /usr/local/etc/cntlm.confpara configurar Cntlm

  • Para iniciar, inicie cntlm ahora y reinicie al inicio: sudo brew services start cntln

Si no ha hecho esto, ese debería ser su primer paso.

Además, no creo que /Library/LaunchDaemonssea ​​un lugar apropiado para el archivo plist. Una mejor ubicación en mi opinión sería ~/Library/LaunchAgentsque se ejecute al iniciar sesión el usuario. Esta es una preferencia personal para determinar cuándo y para qué usuarios del sistema desea que se ejecute el software. Es importante saber esto cuando intente depurar su sistema si algo falla o impide que otras operaciones del sistema se ejecuten correctamente.

Tampoco creo que ese archivo plist se vaya a ejecutar para empezar. Pruebe mi sugerencia de ubicación con el siguiente código de archivo plist a continuación. Tiene salida de error adecuado para el registro para que pueda ver lo que está pasando ubicada en $HOME/Library/Logs/cntlm-output.logy$HOME/Library/Logs/cntlm-error.log

Para obtener más información sobre los trabajos de inicio Launchd, consulte la documentación del desarrollador de Apple aquí: Creación de Daemons y agentes de lanzamiento

<?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>
    <key>Label</key>
    <string>homebrew.mxcl.cntlm</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
          <string>-c</string>
            <string>/usr/local/opt/cntlm/bin/cntlm</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
        <key> StandardOutPath </key>
          <string> ~/Library/Logs/cntlm-output.log </string>
        <key> StandardErrorPath </key>
          <string> ~/Library/Logs/cntlm-error.log </string>
      </dict>
</plist>
Jahhein
fuente
1

Estoy publicando esto como una respuesta separada ya que no tuve que jugar con ningún plistarchivo para que esto funcione. Así es como instalé y comencé CNTLM hoy:

Instalar CNTLM con Homebrew

brew install cntlm

Editar configuración CNTLM

Edite el /usr/local/etc/cntlm.confarchivo, actualice los siguientes elementos:

  • Username: El nombre de usuario para autenticarse con su proxy NTLM
  • Domain: Establece el dominio (si es necesario)
  • Password: Su contraseña en texto sin formato; solo es necesaria para la prueba, elimínela más tarde ...
  • Proxy: Su nombre de host proxy / IP y puerto (puede usar varias líneas)
  • NoProxy: Agregue cualquier host que no necesite ser proxy

Actualizar autenticación

Ejecute lo siguiente para permitir que CNTLM descubra qué autenticación significa trabajar con su proxy:

cntlm -M https://www.google.com

Esto escupirá información como esta, copie esto en su cntlm.confarchivo:

Auth            NTLM
PassNT          ...
PassLM          ...

Luego, encripte su contraseña:

cntlm -H

Ingrese la contraseña de su cuenta cuando se le solicite. Este comando luego imprimirá algo como lo siguiente (algunas líneas son las mismas que las del comando anterior): copie esto en su cntlm.confarchivo:

PassLM          ...
PassNT          ...
PassNTLMv2      ...    # Only for user 'xxx', domain 'yyy'

Elimine su contraseña de texto sin formato del archivo ahora y comente la Passwordlínea.

Tendrá que volver a ejecutar cntlm -Hsi cambia su contraseña.

Ejecute CNTLM como un servicio macOS

Existen varias opciones para esto, elija la que más le guste:

# Start CNTLM at boot time - requires `sudo`
sudo brew services start cntlm

# Start CNTLM at login time
brew services start cntlm

# Run CNTLM on demand, don't start at boot or login
brew services run cntlm

# Stop CNTLM (might have to use `sudo` if you started it with `sudo`)
(sudo) brew services stop cntlm

# List all services managed by Homebrew
brew services list

Se brew servicespuede encontrar más información sobre en la documentación oficial .

nwinkler
fuente
Bien hecho con esta respuesta. La nueva característica de servicios de Homebrew mejoró este proceso. Traté de esta manera cuando respondí y brew no proporcionó ese tipo de instalaciones para la mayoría de los paquetes.
Jahhein
0

Llegué a este problema hace un momento. Lo siguiente se puso en cntlmmarcha para mí.

sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.cntlm.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.cntlm.plist

Esto es solo una solución alternativa, me temo (al menos para mí). El problema se repite en cada reinicio.

Marcelo Cantos
fuente