Newsgroup: it.comp.os.linux.sys
Titolo: Leggere i processi attivi di Windows

Un po' di giorni fa' era uscito un thread in cui si faceva
riferimento a questo problema: leggere l'elenco dei processi
attivi di una macchina NT da Linux. Non ricordo chi aveva
postato il messaggio.
Ecco un semplice scriptino che (usando snmpget) risolve:
Davide
#!/bin/bash
MIB="1.3.6.1.2.1"
PROCS=".25.4.2.1.2.1"
DISKS=".25.2.3.1.3.1"
INST=".25.6.3.1.2.1"
if [ -z $1 ] ; then
	echo "Usage: $0 ipaddress [procs|disks|inst]"
	exit 0
fi
if [ $2 == "inst" ] ; then
	NEXT=$INST
	END=".25.6.3.1.3.1"
fi
if [ $2 == "procs" ] ; then
	NEXT=$PROCS
	END=".25.4.2.1.3.1"
fi
if [ $2 == "disks" ] ; then
	DESC=".25.2.3.1.3."
	BLOCK=".25.2.3.1.4."
	TOTAL=".25.2.3.1.5."
	USED=".25.2.3.1.6."
	NEXT="1"
	END="25.2.3.1.4.1"
	while [ 1 ] ; do
		DSC=`snmpget $1 -v 1 -c public $MIB$DESC$NEXT | sed 's/.*STRING: \(.*\)$/\1/'`
		if [ -z $DSC ] ; then
			echo "Error retriving data"
			exit 1
		fi
		cat "$DSC" > /tmp/DSC.tmp
		OK=`grep -c 'Failed' /tmp/DSC.tmp`
		if [ $OK -gt 0 ] ; then
			echo "Error retriving data"
			exit 1
		fi
		OK=`grep -c 'Timeout' /tmp/DSC.tmp`
		if [ $OK -gt 0 ] ; then
			echo "Error retriving data"
			exit 1
		fi
		OK=`grep -c 'Error' /tmp/DSC.tmp`
		if [ $OK -gt 0 ] ; then
			echo "Error retriving data"
			exit 1
		fi
		BLCK=`snmpget $1 -v 1 -c public $MIB$BLOCK$NEXT | sed 's/.*INTEGER: \(.*\)$/\1/'`
		TOT=`snmpget $1 -v 1 -c public $MIB$TOTAL$NEXT | sed 's/.*INTEGER: \(.*\)$/\1/'`
		USD=`snmpget $1 -v 1 -c public $MIB$USED$NEXT | sed 's/.*INTEGER: \(.*\)$/\1/'`
		COM=`snmpgetnext $1 -v 1 -c public $MIB$DESC$NEXT | sed "s/.*::mib-2.\([^ ]*\) =.*$/\1/"`
		BLCK=$((BLCK / 1024))
		TOT=$((TOT * BLCK))
		USD=$((USD * BLCK))
		FREE=$((TOT - USD))
		echo $DSC $TOT $USD $FREE
		if [ $COM == $END ] ; then
			exit 0
		fi
		NEXT=$((NEXT+1))
	done
else
	while [ 1 ] ; do
		MB="$MIB$NEXT"
		RES=`snmpget $1 -v 1 -c public $MB | sed 's/.*STRING: "\(.*\)"$/\1/'`
		if [ -z "$RES" ] ; then
			echo "Error retriving data"
			exit 1
		fi
		echo $RES
		NEXT=`snmpgetnext $1 -v 1 -c public $MB | sed "s/.*::mib-2\([^ ]*\) =.*$/\1/"`
		if [ -z "$NEXT" ] ; then
			echo "Error retriving data"
			exit 1
		fi
		if [ "$NEXT" = "$END" ] ; then
			exit
		fi
	done
fi

 Ecco un semplice scriptino che (usando snmpget) risolve:
Scusa Davide, ne approfitto.... dove hai trovato le info su l'utilizzo
dell'snmp? Girando in rete non ho trovato nulla di veramente utile, o magari
è il mio modo di ricercare che non è "utile".
Grazie. Ciao.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.522 / Virus Database: 320 - Release Date: 29/09/2003

 Ecco un semplice scriptino che (usando snmpget) risolve:
Non so a te, ma la mia bash (2.05b.0(1) su RH9) si lamenta un po' alle 
righe 12, 17 e 22.
Ho dovuto cambiarle cosi':
 > if [ $2 == "inst" ] ; then
if [ "$2" == "inst" ] ; then
 > if [ $2 == "procs" ] ; then
if [ "$2" == "procs" ] ; then
 > if [ $2 == "disks" ] ; then
if [ "$2" == "disks" ] ; then
-- 
ciao            |visita
                 |
http://www.sifor.it
gelty           |
http://www.sifor.com
-------------------------------------
E' esplicitamente vietato usare l'indirizzo e-mail di questo messaggio
per fini diversi dalla risposta al messaggio stesso (Art. 10 DL. 171/98).

 dell'snmp?
Hemmm... in che senso? Intendi dove ho pescato i vari "numeretti"
delle classi o dove ho scoperto che Windows ti dice anche quando deve
andare al gabinetto via Snmp? Se e' il primo, mi sono installato un
package Snmp su Windows ed ho fatto la scansione di tutte le classi,
per il secondo, e' una cosa abbastanza nota...
Davide

 ha scritto nel messaggio
news:blhsk5$bsmbo$2...@ID-18487.news.uni-berlin.de...

... le classi, ovviamente :-P
Come si chiama il package in questione?
p.s.
Chiedo scusa per l'OT


 Come si chiama il package in questione?
getif
Davide

 getif
Grazie 1000!
io intanto ho usato snmpwalk....
echo "Cosa voi sapere?"
echo "1) Processi attivi"
echo "2) Applicazioni installate"
echo "3) Hardware Installato"
echo "4) Dischi rigidi, CD-ROM, Floppy ecc.."
echo -n "Scegli: "; read risposta
echo -n "Indirizzo IP o Nome PC: "; read indirizzo
case "$risposta" in
1)
tipo="hrSWRunName"
;;
2)
tipo="hrSWInstalledName"
;;
3)
tipo="hrDeviceDescr"
;;
4)
tipo="hrStorageDescr"
;;
*)
break
;;
esac
snmpwalk $indirizzo -c public |grep $tipo |cut -d "=" -f 2 |cut -d "\"" -f 2


 attivi di una macchina NT da Linux. 
Per macchina NT ti riferisci esclusivamente ad NT(<=4.x) oppure a 
win2k/XP/9x?
Sto facendo delle prove verso un win2k ma va in timeout...


 win2k/XP/9x?
Io l'ho verificato solo su 2K/Xp. Attenzione che devi avere 
installato il supporto su Windows, altrimenti non risponde.
Davide


Ach... il supporto e' nativo (vedi CD d'installazione) o bisogna 
scaricare qualche altro tool?


 scaricare qualche altro tool?
Dal Pannello di Controllo/Installa applicazioni/Componenti di Windows/
mi pare si chiami "Monitor di rete" o qualche cosa del genere...
Comunque si', e' nativo.
Davide


Grazie.
Bastava aggiungere il Simple Network Management Protocol :-)
Ora pero' mi da errori tipo "Error retriving data".
Che abbiano cambiato il protocollo?


 Che abbiano cambiato il protocollo?
Stesso consiglio di prima: installati getif o qualche cosa del
genere sulla macchina Win e controlla che i numeri della classe
siano corretti.
Davide