J'ai écrit un script à cette fin si vous souhaitez l'utiliser. L'utilisation pour TFTP serait la suivante.
sudo what-listens.sh -p 69
Vous serez peut-être surpris de constater qu'il montre launchd
au lieu du processus TFTP proprement dit. Le service doit être en cours d'exécution pour voir le processus TFTP réel, et launchd
gère probablement ce 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
Je vois que la question a été modifiée avec...
Mon but est d'utiliser script pour savoir si le serveur tftp a été activé OU non....
Cette solution fonctionnait jusqu'à Mavericks, 10.9, et probablement jusqu'à El Capitan, 10.11.6 ; mais je ne l'ai pas encore essayée sur un Mac avec une version supérieure à 10.9. Pour désactiver un service :
sudo defaults write /private/var/db/launchd.db/com.apple.launchd/overrides.plist 'com.apple.tftpd' -dict Disabled -bool true
Il peut ensuite être vérifié :
sudo /usr/libexec/PlistBuddy -c 'print com.apple.tftpd:Disabled' /private/var/db/launchd.db/com.apple.launchd/overrides.plist
Si la valeur de retour n'est pas "true", le service n'est pas désactivé.