Escribí un script para ese propósito si te importa 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
en lugar del proceso TFTP real. El servicio debe estar en ejecución para ver el proceso TFTP real, y launchd
probablemente esté administrando 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 se modificó con ...
Mi objetivo es usar el script para rastrear si el servidor tftp se ha activado O no ...
Esta solución a continuación estaba trabajando hasta Mavericks, 10.9, y probablemente funciona 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 servicio:
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 servicio no está deshabilitado.