Juin 152011
Download : nettl.sh
#!/bin/ksh PATH="/usr/sbin:/usr/bin:${PATH}" TMPCONF=/tmp/${0##*/}.${RANDOM}.conf cp /dev/null ${TMPCONF} V_PROG=${0} #------------------------------------------------------------------------------# ### fonction d'arret du programme #### arret_du_prog () { echo "Vous trouverez l'historique de l'affichage dans le fichier /tmp/${V_PROG##*/}.log" [ -f "${V_LOCK}" ] && rm "${V_LOCK}" [ -f "${TMPCONF}" ] && rm "${TMPCONF}" nettl -traceoff -entity all 2>/dev/null exit ${1:-0} } #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# ### fonction d'affichage de l'aide #### Usage () { cat <<EOF Usage: $V_PROG [ -e entity ] -f filtre valeur [ ... -f filtre valeur ... ] entity est 'all' par defaut et peut etre: ip tcp udp driver icmp nfs loopback x25 igmp filtre peut etre une des valures suivantes: Layer Type Filtre Description _____________________________________________________________ Layer 1 dest hardware destination address source hardware source address interface software network interface _____________________________________________________________ Layer 2 ssap IEEE802.2 source sap dsap IEEE802.2 destination sap type Ethernet type _____________________________________________________________ Layer 3 ip_saddr IP source address ip_daddr IP destination address ip_proto IP protocol number _____________________________________________________________ Layer 4 tcp_sport TCP source port tcp_dport TCP destination port udp_sport UDP source port udp_dport UDP destination port connection a level 4 (TCP, UDP) connection _____________________________________________________________ Layer 5 rpcprogram RPC program rpcprocedure RPC procedure rpcdirection RPC call or reply pour valeur a vous d'associer en fonction du filter. exemples: # pour voir les paquets tcp source et destination du port 21: $V_PROG -e all -f tcp_sport 21 -f tcp_dport 21 EOF exit ${1:-0} } #------------------------------------------------------------------------------# #------------------------------------------------------------------------------# ### Analyse des arguments #### while [ "${#}" -ne "0" ] do case $1 in -e) # nettl entity if [ "$2" = "all" ] then V_ENTITY=all else V_ENTITY=ns_ls_${2} fi shift 2 ;; -f) # netfmt filters [ -z "$2" -o -z "$3" ] && echo "Merci de specifier un filtre" && usage [ "$(echo $2 |cut -c1)" = "-" -o "$(echo $3 |cut -c1)" = "-" ] && { echo "'-f ${2} ${3}' n'est pas une liste d'arguments valides" Usage } echo "filter $2 $3">> ${TMPCONF} shift 3 ;; esac done # Il faut des options de filtre a netfmt, sinon, pas d'interet [ -z "$(cat ${TMPCONF})" ] && { echo "Merci d'ajouter un filtre avec l'option '-f'." Usage } trap arret_du_prog 1 2 3 11 13 15 V_LOCK=/tmp/${0##*/}.lock if [ -f "${V_LOCK}" ] then echo "Erreur: ${0##*/} est deja en cours d'utilisation" arret_du_prog 1 else touch "${V_LOCK}" fi # Test de demarrage de nettl if [ -z "$(UNIX95= ps -e -o args |grep "^/usr/lbin/ntl_reader " |grep -v grep)" ] then echo "nettl n'est pas demarre, veuillez lancer nettl pour activer les fonction de trace reseaux" echo "pour lancer nettl il faut que la variable NETTL soit positionne avec '1' dans le fichier /etc/rc.config.d/nettl" echo "ensuite, lancer la commande suivante: /sbin/init.d/nettl start" arret_du_prog fi # affichage des infos resales nettl -traceon all -entity ${V_ENTITY:-all} |netfmt -F -N -n -l -c ${TMPCONF} |tee /tmp/${0##*/}.log arret_du_prog
faut avouer, je suis un peu pro hpux mais dès fois, on se rend compte qu’il y a des choses bien chez les autres, je prend l’exemple de snoop chez solaris, une commande livrée en standard qui équivaut à un nmap allégé.
sous hpux, on a bien nettl mais son utilisation est tellement obscure qu’il n’est pas facile de s’y retrouver.
voici donc un script qui va résoudre ce problème en simplifiant tout ça, lancer et arrêter le daemon nettl lancer les bonnes commandes etc…, voici son usage:
Usage: ./nettl.sh [ -e entity ] -f filtre valeur [ ... -f filtre valeur ... ] entity est 'all' par defaut et peut etre: ip tcp udp driver icmp nfs loopback x25 igmp filtre peut etre une des valures suivantes: Layer Type Filtre Description _____________________________________________________________ Layer 1 dest hardware destination address source hardware source address interface software network interface _____________________________________________________________ Layer 2 ssap IEEE802.2 source sap dsap IEEE802.2 destination sap type Ethernet type _____________________________________________________________ Layer 3 ip_saddr IP source address ip_daddr IP destination address ip_proto IP protocol number _____________________________________________________________ Layer 4 tcp_sport TCP source port tcp_dport TCP destination port udp_sport UDP source port udp_dport UDP destination port connection a level 4 (TCP, UDP) connection _____________________________________________________________ Layer 5 rpcprogram RPC program rpcprocedure RPC procedure rpcdirection RPC call or reply pour valeur a vous d associer en fonction du filter. exemples: # pour voir les paquets tcp source et destination du port 21: ./nettl.sh -e all -f tcp_sport 21 -f tcp_dport 21
ce script m’a déjà fait gagner du temps, j’espère qu’il en sera de même pour vous.