¿Cómo encontrar el nombre del process del server TFTP en ejecución?

Puedo usar el command sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist para iniciar el server TFTP en mac. Pero, ¿cuál es el nombre del process del server TFTP en ejecución?

Intenté ps aux | grep tftp ps aux | grep tftp y pgrep tftp , ninguno me da nada …

  • ¿Cómo creo un enlace simbólico a un directory con un espacio en él?
  • applepushserviced y ocspd llevan mucha memory, ¿los está matando?
  • ¿Es posible acoplar un inspector web independiente en Safari 8?
  • process eapolclient utilizando 30 GB de memory?
  • ¿Cómo se guarda una variable ambiental?
  • ¿Qué process alimenta la barra de progreso durante el arranque inicial?
  • Mi objective es usar script para rastrear si el server tftp se ha activado O no …

  • Bloquear pantalla desde la línea de command?
  • ¿Puedo abrir un file de text en Vista previa desde la Terminal?
  • Mover .bash_profile a Dropbox
  • ¿Por qué el launchd tiene varias instancias por usuario (no solo yo y root, sino también _spotlight y _windowserver)?
  • ¿Es peligroso interrumpir la optimization de la actualización posterior a OS X?
  • VDCAssistant parece estar causando informes de fallos perpetuos
  • 4 Solutions collect form web for “¿Cómo encontrar el nombre del process del server TFTP en ejecución?”

    Escribí un guión para ese propósito si te interesa usarlo. El uso para TFTP sería el siguiente.

     sudo what-listens.sh -p 69 

    Es posible que se sorprenda al descubrir que muestra launchd lugar del process TFTP real. El service necesita ejecutarse para ver el process TFTP real, y launchd probablemente esté administrando ese service.

     #!/bin/bash if [[ "$EUID" -ne 0 ]]; then echo 'This script must be run as root.' 1>&2 exit 1 fi CMD_SUDO='/usr/bin/sudo' CMD_LSOF='/usr/sbin/lsof' CMD_GREP='/usr/bin/grep' function port() { PORT="$1" $CMD_SUDO $CMD_LSOF -n -i4TCP:"$PORT" | $CMD_GREP 'LISTEN' if [[ "$?" -eq 1 ]]; then echo "There is no program listening on port $PORT." fi } function usage() { echo "Usage: $0 [-p,--port <port> ]" } B_NEED_ARG=0 case "$1" in -p|--port) FUNCTION=port B_NEED_ARG=1 ;; *) echo "Error: unknown parameter: '$1'." FUNCTION=usage ;; esac if [[ $B_NEED_ARG -eq 1 ]] ; then if [[ -z "$2" ]] ; then echo "Error: option '$1' requires an argument." usage exit 1 else if ! [[ "$2" =~ ^[0-9]+$ ]]; then echo "Error: argument to '$1' option must be an integer." usage exit 1 fi fi fi ${FUNCTION} "$2" unset CMD_SUDO unset CMD_LSOF unset CMD_GREP unset B_NEED_ARG unset FUNCTION unset PORT 

    Veo que la pregunta fue modificada con …

    Mi objective es usar script para rastrear si el server tftp se ha activado O no …

    La siguiente solución funcionaba para Mavericks, 10.9, y probablemente funcione hasta El Capitán, 10.11.6; pero, en realidad no lo he probado en una Mac con una versión superior a 10.9. Para deshabilitar un service:

     sudo defaults write /private/var/db/launchd.db/com.apple.launchd/overrides.plist 'com.apple.tftpd' -dict Disabled -bool true 

    Luego se puede verificar:

     sudo /usr/libexec/PlistBuddy -c 'print com.apple.tftpd:Disabled' /private/var/db/launchd.db/com.apple.launchd/overrides.plist 

    Si el valor de retorno no es 'verdadero', entonces el service no está deshabilitado.

    La respuesta corta es que no hay un process en ejecución

    Necesitará ver el plist con más detalle (y probablemente lea la documentation de Apple sobre Agentes de lanzamiento y Daemons .

    Lo que hace el plist para tftp es una list de los sockets que escucha el agente.

    Cuando alguien habla con el socket que figura en la list, launchd se dará count de que el progtwig que se incluye en el plist, / usr / libexec / tftpd, es necesario y lo inicia.

    Entonces, hasta que algo hable con el socket, el agente no se está ejecutando y creo que como el agente tiene la intención de ser compatible, lo hará cuando el socket esté cerrado. Cuando el socket esté abierto, se ejecutará un process / usr / libexec / tftpd

    Actualización :

    Como está inspirado en @Christopher, aquí está el script simple y sucio que escribí para satisfacer mis necesidades 🙂

     #!/usr/bin/env python # -*- coding: utf-8 -*- import sys,os my_pid = os.system("sudo lsof -n -i4UDP:69 > /dev/null 2>&1") if len(sys.argv) == 1: if my_pid == 0: print 'TFTP Server is already turned on.' else: print "Parameter (start/stop) is requinetworking to turn on/off TFTP Server!" elif len(sys.argv) > 2: print "Only One Parameter (start/stop) is acceptable!" else: cmdarg = str(sys.argv[1]) if cmdarg == 'start': if my_pid == 0: print 'TFTP Server is already turned on, No Action!' else: os.system("sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist") os.system("sudo chmod 777 /private/tftpboot") print 'TFTP Server been Started.' elif cmdarg == 'stop': if my_pid == 0: os.system("sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist") os.system("sudo chmod 755 /private/tftpboot") print "TFTP Server has been Stopped." else: print "TFTP Server was not Turned on! No Action!" else: print "Correct Parameter (start/stop) is requinetworking!" sys.exit() 

    Para verificar si tftpd está correc- tamente activado, el command es:

     /usr/bin/sudo launchctl list com.apple.tftpd 

    y la salida debería verse así:

     { "Wait" = true; "Sockets" = { "Listeners" = ( file-descriptor-object; file-descriptor-object; ); }; "LimitLoadToSessionType" = "System"; "Label" = "com.apple.tftpd"; "inetdCompatibility" = true; "TimeOut" = 30; "OnDemand" = true; "LastExitStatus" = 0; "Program" = "/usr/libexec/tftpd"; "ProgramArguments" = ( "/usr/libexec/tftpd"; "-i"; "/private/tftpboot"; ); }; 

    Una testing en $? es suficiente para establecer que, desde el punto de vista del sistema, el service se active y se reinicie según sea necesario en una connection externa. Por ejemplo:

     if /usr/bin/sudo launchctl list com.apple.tftpd ; then echo "tftpd is on" else echo "tftpd is off" fi 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).