Soy un fresco de posgrado y sólo conseguí mi primer trabajo como programador en Hong Kong. Como el tema descrito, necesito usar C# para el control de los puertos en el switch Cisco.

He búsqueda y estudio por un tiempo bastante largo, así que tengo los conocimientos básicos acerca de SNMP y MIB. Me pueden encontrar algunos artículos hablando acerca de cómo administrar un switch cisco, pero ninguno de ellos se especifica cómo hago para habilitar y deshabilitar los puertos. En este momento yo creo que es necesario para configurar el switch para que se habilite el servicio SNMP, entonces debo enviar un Set de SNMP de paquetes para activar/desactivar el puerto en particular. Es correcto?

Alguien tiene alguna experiencia en esto y quisiera compartir conmigo? Por favor, dejar alguna sugerencia. Y si usted ha leído algunos sitios web útiles antes, por favor dejar la url aquí para que yo pueda tener una mirada demasiado.

Muchas gracias por su atención.

OriginalEl autor tingfungc | 2012-02-07

3 Comentarios

  1. 7

    Sé tres métodos (yo soy más aficionado a la primera):

    Opción 1:

    Una forma común para acercarse a algo como esto es automatizado de telnet (o automatizado ssh) para enviar los comandos apropiados. IOS es bastante estandarizado para la mayor parte, y funciona bastante bien de esta manera:
    TCL del Esperar paquete es perfecto para este tipo de cosas… me imagino que hay es una implementación en C#.

    Esto funciona mejor si usted ya está familiarizado con IOS sintaxis.

    Opción 2:

    Esto es probablemente lo que usted desea:

    IF-MIB::ifAdminStatus es modificable a través de SNMP
    (Aquí hay un ejemplo de uso de NET-SNMP):

    De interfaz:

    snmpset -v1 -c de la comunidad nombre de host SI-MIB::ifAdminStatus.interfaz i 1

    Interfaz:

    snmpset -v1 -c de la comunidad nombre de host SI-MIB::ifAdminStatus.interfaz i 2

    (Donde ‘interfaz’ es un dígito que representa una interfaz, el valor está disponible en el mismo MIB – hacer un paseo en 1.3.6.1.2.1.2.2.1.2 para encontrar los valores de la interfaz y las descripciones.)

    (De nuevo, es probable que haya una implementación en C# de snmpset puede aprovechar… y
    debe configurar las comunidades SNMP en el dispositivo de antemano.)

    Opción 3:

    Es posible utilizar SNMP para gatillo una carga o descarga de la configuración a través de un servidor TFTP.

    Esto se utiliza a veces en esta secuencia:

    1. descarga de configuración en ejecución

    2. modificar la config

    3. cargar config

    4. copia el cargado de configuración para la configuración en ejecución (sobrescribe lo que está activa en el dispositivo)

    Gracias Niall, tu información es muy útil. Voy a estudiar en ellos ahora. Tienes razón, creo que la opción 2 es probablemente lo que estoy pensando. Pero como usted sugiere el primero, voy a probarlo. 😛
    Me alegra ser de ayuda.
    He probado a habilitar la conexión de telnet y conectado al switch con éxito. Así que la escritura de un programa de C# para hacer cambiar de puerto sería bastante simple. Gracias niall por su opción1. Además, mi jefe aún desea utilizar SNMP en este problema, así que voy a intentar opción2 ahora. Así 1.3.6.1.2.1.2.2.1.7 es el destino OID y es un único valor de tipo entero. Pero me tienen un total de 24 puertos (FastEthernet 1-24), por lo que no debe ser de 24 valores y Oid?
    Sí, por favor, mira el enlace que he incluido en la respuesta (puede que tenga Que google snmpwalk) > tools.cisco.com/Support/SNMP/do/…
    Gracias de nuevo Niall. El problema está solucionado 🙂

    OriginalEl autor Niall Byrne

  2. 1

    Que he encontrado para varios switches POE de cisco ( cisco y zyxel) que el snmp string para manipular POE estado es

    SNMPv2-SMI::mib-2.105.1.1.1.3.1.x
    donde x es el puerto deseado ( por un conmutador de 8 puertos 1~8 de 24 puertos switch 1~24 )

    el mencionado IF-MIB::ifAdminStatus.la interfaz de actuar sólo para habilitar/deshabilitar el puerto, pero el principal objetivo es restablecer o reducir el costo de la energía para la noche /fin de semana
    en un entorno con decenas/cientos de Puntos de Acceso /teléfonos VoIP, esto puede ahorrar una gran cantidad de energía

    el comando dejar de POE en el puerto es

    snmpset -v 2c -c setcomunity host SNMPv2-SMI::mib-2.105.1.1.1.3.1.x i 2

    el comando para iniciar POE en el puerto es

    snmpset -v 2c -c setcomunity host SNMPv2-SMI::mib-2.105.1.1.1.3.1.x i 1

    si utiliza la versión 3 tendrás la necesidad de autenticación también

    OriginalEl autor user2854160

  3. 0

    Puede utilizar telnet programa para de esta manera google «MinimalisticTelnet» y el uso de ejemplo para entender esta solución

    Otra manera es el uso del Protocolo SNMP como este ejemplo :
    Aviso : para trabajar con snmp puedo conseguir cambiar y personalizar SnmpSharpNet de la biblioteca , y se llama en mi programa de

    using SnmpSharpNet;
    

    A continuación, escribe este código para deshabilitar puertos de 1 a 6 :

    Console.WriteLine("Ports Disabler ");
                UdpTarget target = new UdpTarget((IPAddress)new IpAddress("192.168.1.200"));
                Pdu pdu = new Pdu(PduType.Set);
                pdu.VbList.Add(new Oid("1.3.6.1.2.1.2.2.1.7.1"), new Integer32(2));
                pdu.VbList.Add(new Oid("1.3.6.1.2.1.2.2.1.7.2"), new Integer32(2));
                pdu.VbList.Add(new Oid("1.3.6.1.2.1.2.2.1.7.3"), new Integer32(2));
                pdu.VbList.Add(new Oid("1.3.6.1.2.1.2.2.1.7.4"), new Integer32(2));
                pdu.VbList.Add(new Oid("1.3.6.1.2.1.2.2.1.7.5"), new Integer32(2));
                pdu.VbList.Add(new Oid("1.3.6.1.2.1.2.2.1.7.6"), new Integer32(2));
                AgentParameters aparam = new AgentParameters(SnmpVersion.Ver2, new OctetString("2645"));
                SnmpV2Packet response;
                try
                {
                    //Send request and wait for response
                    response = target.Request(pdu, aparam) as SnmpV2Packet;
                }
                catch (Exception ex)
                {
                    //If exception happens, it will be returned here
                    Console.WriteLine(String.Format("Request failed with exception: {0}", ex.Message));
                    target.Close();
                    return;
                }
                //Make sure we received a response
                if (response == null)
                {
                    Console.WriteLine("Error in sending SNMP request.");
                }
                else
                {
                    //Check if we received an SNMP error from the agent
                    if (response.Pdu.ErrorStatus != 0)
                    {
                        Console.WriteLine(String.Format("SNMP agent returned ErrorStatus {0} on index {1}",
                          response.Pdu.ErrorStatus, response.Pdu.ErrorIndex) + response.ToString());
                    }
                    else
                    {
                        //Everything is ok. Agent will return the new value for the OID we changed
                        Console.WriteLine(String.Format("Agent response {0}: {1}",
                          response.Pdu[0].Oid.ToString(), response.Pdu[0].Value.ToString()));
                    }
                }
    

    Espero que esta respuesta sea útil y puede ayudar a usted ,

    OriginalEl autor user3290286

Dejar respuesta

Please enter your comment!
Please enter your name here