#!/bin/bash

# Realizzare uno script su Client che accetti come parametri
# "IP1:PORTA1" "IP2:PORTA2" e recuperi, via SNMP, il nome 
# dell'utente che su Server sta impegnando la connessione da
# essi definita

# Soluzione base
# richiede lato server, in /etc/snmp/snmpd.conf
# extend socket /usr/bin/sudo /bin/ss -ntp
# extend sshnum ps haux

MYPID=$(snmpget -v 1 -c public 192.168.56.203 'NET-SNMP-EXTEND-MIB::nsExtendOutputFull."socket"'  | egrep " $1 +$2 " | awk -F "pid=" '{ print $2 }' | cut -f1 -d,)

snmpget -v 1 -c public 192.168.56.203 'NET-SNMP-EXTEND-MIB::nsExtendOutputFull."sshnum"' | egrep "^[^ ]+ +$MYPID " | awk '{ print $1 }'

# Proposte di miglioramento:
# 
# 1) considerare tutti i "pid=" di ss, non solo il primo
#
# 2) condensare in una singola extend tutto il preprocessing 
#    necessario in modo da utilizzare una singola snmpget
# 
# 3) da esplorare senza garanzie: si può usare nsExtendInput
#    per inviare all'agent i parametri, e ricevere direttamente
#    una risposta che non richieda ulteriore filtraggio?