Escribí un script para ese propósito si quieres usarlo. El uso de TFTP sería el siguiente.
sudo what-listens.sh -p 69
Puede que te sorprendas al ver que muestra launchd
en lugar del proceso TFTP real. El servicio tiene que estar funcionando para ver el proceso TFTP real, y launchd
es probablemente la gestión de ese servicio.
#!/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 objetivo es usar script para rastrear si el servidor tftp ha sido activado o no...
La solución que se muestra a continuación funcionaba hasta Mavericks, 10.9, y probablemente funcione hasta El Capitán, 10.11.6; pero, en realidad no la he probado en un Mac con una versión superior a la 10.9. Para desactivar un servicio:
sudo defaults write /private/var/db/launchd.db/com.apple.launchd/overrides.plist 'com.apple.tftpd' -dict Disabled -bool true
Entonces se puede comprobar:
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 servicio no está desactivado.