package dmg.protocols.snmp ; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import static org.dcache.util.ByteUnit.KiB; public class SnmpTest { public static final int listenPort = 22112 ; public static void main( String [] args ){ if( args.length < 2 ){ try{ DatagramSocket socket = new DatagramSocket(listenPort) ; DatagramPacket recPacket = new DatagramPacket( new byte[KiB.toBytes(1)], KiB.toBytes(1)); System.out.println( "Waiting for answer" ) ; socket.receive( recPacket ) ; System.out.println( "Tranmission finished" ) ; byte [] b = recPacket.getData() ; int len = recPacket.getLength() ; SnmpObjectHeader._print( b , 0 , len ) ; }catch( Exception eee){ System.err.println( " Exception : "+eee ) ; } }else{ String hostName = args[0] ; int port = Integer.parseInt(args[1]); String oid ; if( args.length < 3 ) { oid = "1.3.6.1.2.1.1.3"; } else { oid = args[2]; } SnmpSequence list = new SnmpSequence() ; list.addObject( new SnmpVarBind( new SnmpOID( oid ) , new SnmpNull() ) ) ; SnmpGetNextRequest getRequest = new SnmpGetNextRequest( new SnmpInteger( 100 ) , new SnmpInteger( 0 ) , new SnmpInteger( 0 ) , list ) ; SnmpSequence request = new SnmpSequence() ; request.addObject( new SnmpInteger(0) ) ; request.addObject( new SnmpOctetString( "public" ) ) ; request.addObject( getRequest ) ; byte [] b = request.getSnmpBytes() ; String output = SnmpObjectHeader._print( b , 0 , b.length ) ; System.out.println( "Sending to host "+hostName+" port "+port ) ; System.out.println( "Data : "+output ) ; try{ DatagramSocket socket = new DatagramSocket() ; InetAddress addr = InetAddress.getByName( hostName ) ; DatagramPacket recPacket = new DatagramPacket( new byte[KiB.toBytes(1)], KiB.toBytes(1)); DatagramPacket packet = new DatagramPacket( b , b.length , addr , port ) ; socket.send( packet ) ; System.out.println( "Waiting for answer" ) ; socket.receive( recPacket ) ; System.out.println( "Tranmission finished" ) ; b = recPacket.getData() ; int len = recPacket.getLength() ; System.out.println( " Result ("+len+") : "+ SnmpObjectHeader._print( b , 0 , len ) ) ; SnmpObject res = SnmpObject.generate( b , 0 , len ) ; System.out.println( "Data : "+res ) ; }catch( Exception eee){ System.err.println( " Exception : "+eee ) ; } } } }