Пример #1
0
        // Pour pouvoir enchaîner les getnext sans avoir à réinitialiser
        private CResultAErreur GetNextInTable(CRequeteSnmpOID requeteOID, string strOID)
        {
            CResultAErreur result = CResultAErreur.True;

            string[] args = new string[7];
            args[0] = "getnext";
            args[1] = requeteOID.IpAgent;
            args[2] = "-o" + strOID;
            args[3] = "-Dl0";                      //don't make debug
            args[4] = "-c" + requeteOID.Community; //community read
            args[5] = "-t" + requeteOID.TimeOut;
            args[6] = "-r" + requeteOID.NbRetry;

            try
            {
                Hashtable htResult = new Hashtable();
                htResult = Manager.makeOrder(args);

                result.Data = new CVariableSNMPResultat((string)((Hashtable)htResult[1])["value"],
                                                        (string)((Hashtable)htResult[1])["oid"]);;
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Пример #2
0
        //Renvoie un CVariableSNMPResultat
        public CResultAErreur GetNextValue(CRequeteSnmpOID requeteOID)
        {
            CResultAErreur result = CResultAErreur.True;

            string[] args = new string[7];
            args[0] = "getnext";
            args[1] = requeteOID.IpAgent;
            string strOID = requeteOID.OID;

            //Si l'OID commence par un ., supprime le .
            if (strOID.Length > 0 && strOID[0] == '.')
            {
                strOID = strOID.Substring(1);
            }
            args[2] = "-o" + strOID;
            args[3] = "-Dl0";                      //don't make debug
            args[4] = "-c" + requeteOID.Community; //community read
            args[5] = "-t" + requeteOID.TimeOut;
            args[6] = "-r" + requeteOID.NbRetry;

            try
            {
                Hashtable htResult = new Hashtable();
                htResult = Manager.makeOrder(args);

                result.Data = new CVariableSNMPResultat((string)((Hashtable)htResult[1])["value"],
                                                        (string)((Hashtable)htResult[1])["oid"]);;
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Пример #3
0
        public CResultAErreur SetValue(CRequeteSnmpOID requeteOID, object valeur)
        {
            CResultAErreur result = CResultAErreur.True;

            string[] args = new string[9];
            args[0] = "set";
            args[1] = requeteOID.IpAgent;
            string strOID = requeteOID.OID;

            //Si l'OID commence par un ., supprime le .
            if (strOID.Length > 0 && strOID[0] == '.')
            {
                strOID = strOID.Substring(1);
            }
            args[2] = "-o" + strOID;
            args[3] = "-Dl0";                      //don't make debug
            args[4] = "-C" + requeteOID.Community; //community read
            args[5] = "-t" + requeteOID.TimeOut;
            args[6] = "-r" + requeteOID.NbRetry;
            args[7] = "-T" + ConvertTypeMibObjToTypeLibrairie(requeteOID.Type);
            args[8] = "-V" + Convert.ToString(valeur);

            try
            {
                Hashtable htResult = new Hashtable();
                htResult = Manager.makeOrder(args);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Пример #4
0
        //Acquisition d'une table complète pour une variable donnée
        //L'OID de départ ne doit pas contenir d'index, il doit
        //contenir l'OID pur de la variable de table
        public CResultAErreur GetTable(CRequeteSnmpOID requeteOID)
        {
            CResultAErreur resultat = CResultAErreur.True;
            CResultAErreur result;

            List <CVariableSNMPResultat> listeResultat = new List <CVariableSNMPResultat>();

            CRequeteSnmpOID reqOID = requeteOID;
            string          strOID = requeteOID.OID;

            //Si l'OID commence par un ., supprime le .
            if (strOID.Length > 0 && strOID[0] == '.')
            {
                strOID = strOID.Substring(1);
            }

            string strRootOID = strOID;
            int    nLen       = strRootOID.Length;

            do
            {
                result = GetNextInTable(requeteOID, strOID);

                if (result)
                {
                    CVariableSNMPResultat varResult = (CVariableSNMPResultat)result.Data;
                    strOID = varResult.Oid;
                    if (strOID.Substring(0, nLen) != strRootOID) // on est sorti de la table
                    {
                        break;
                    }
                    else
                    {
                        listeResultat.Add(varResult);
                        varResult.Index = strOID.Substring(nLen);
                    }
                }
            }while (result);

            if (result)
            {
                resultat.Data = listeResultat;
                return(resultat);
            }

            return(result);
        }
Пример #5
0
        void GetDonneesObjetSnmpValues(object obj, ref object[] datas)
        {
            CSpvMibobj mibobj = obj as CSpvMibobj;

            if (mibobj == null)
            {
                return;
            }
            ArrayList lst     = new ArrayList();
            string    stValue = "";

            if (m_spvEquip.AdresseIP.Length > 0 && m_spvEquip.CommunauteSnmp.Length > 0)
            {
                CRequeteSnmpOID requeteSnmp = new CRequeteSnmpOID(
                    m_spvEquip.AdresseIP, m_spvEquip.CommunauteSnmp, mibobj.GetOID());
                using (CContexteDonnee ctx = new CContexteDonnee(CSc2iWin32DataClient.ContexteCourant.IdSession, true, false))
                {
                    CResultAErreur resultSnmp = requeteSnmp.GetValueSNMP(ctx);
                    if (resultSnmp != null && resultSnmp.Data != null)
                    {
                        stValue = resultSnmp.Data.ToString();
                    }
                    else
                    {
                        if (!resultSnmp)
                        {
                            MessageBox.Show(resultSnmp.MessageErreur.ToString(), "Timos", MessageBoxButtons.OK,
                                            MessageBoxIcon.Exclamation);
                        }

                        lst.Add(I.T("Not found|60074"));
                    }
                }
            }

            lst.Add(mibobj.OidObjet);
            lst.Add(mibobj.NomObjetUtilisateur);
            lst.Add(stValue);
            datas = lst.ToArray();
        }
Пример #6
0
        void GetDonneesObjetSnmpTableVariables(object obj, ref object[] datas)
        {
            CVarTableItem varTableItem = obj as CVarTableItem;

            if (varTableItem == null)
            {
                return;
            }

            ArrayList lst = new ArrayList();

            lst.Add(varTableItem.index);
            foreach (CSpvMibobj mibobj in varTableItem.m_lstMibObj)
            {
                string stOid   = mibobj.OidObjet.TrimEnd('.');
                string stIndex = varTableItem.index.TrimStart('.');

                CRequeteSnmpOID requeteSnmp = new CRequeteSnmpOID(
                    m_spvEquip.AdresseIP, m_spvEquip.CommunauteSnmp, stOid + "." + stIndex);
                using (CContexteDonnee ctx = new CContexteDonnee(CSc2iWin32DataClient.ContexteCourant.IdSession, true, false))
                {
                    CResultAErreur resultSnmp = requeteSnmp.GetValueSNMP(ctx);
                    if (resultSnmp != null && resultSnmp.Data != null)
                    {
                        string stValue = resultSnmp.Data.ToString();
                        lst.Add(stValue);
                    }
                    else
                    {
                        lst.Add(I.T("Not found|60074"));
                    }
                }
            }

            datas = lst.ToArray();

            return;
        }
Пример #7
0
        //////////////////////////////////////////////////////////////////
        public static void ModificationsSNMP(
            CContexteDonnee contexte,
            Hashtable tableData,
            ref CResultAErreur result)
        {
            if (!result)
            {
                return;
            }
            DataTable table = contexte.Tables[CRelationEquipementLogique_ChampCustom.c_nomTable];

            if (table == null)
            {
                return;
            }
            ArrayList           lst = new ArrayList(table.Rows);
            IRequeteSNMPServeur requeteurServeur = null;

            foreach (DataRow row in lst)
            {
                if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added)
                {
                    if (row[CObjetDonnee.c_champContexteModification] == DBNull.Value ||
                        (string)row[CObjetDonnee.c_champContexteModification] != CSpvChampCustomSNMP.c_contexteModificationRefreshFromSNMP)
                    {
                        CRelationEquipementLogique_ChampCustom relChamp = new CRelationEquipementLogique_ChampCustom(row);
                        CSpvChampCustomSNMP champSNMP = new CSpvChampCustomSNMP(contexte);
                        if (champSNMP.ReadIfExists(new CFiltreData(CSpvChampCustomSNMP.c_champIdChampCustomTimos + "=@1",
                                                                   (int)row[CChampCustom.c_champId])))
                        {
                            if (!champSNMP.GetOnly)
                            {
                                CSpvEquip eqptSpv = new CSpvEquip(contexte);
                                if (eqptSpv.ReadIfExists(new CFiltreData(CSpvEquip.c_champSmtEquipementLogique_Id + "=@1",
                                                                         row[CEquipementLogique.c_champId])))
                                {
                                    string strIP         = eqptSpv.AdresseIP;
                                    string strCommunaute = eqptSpv.CommunauteSnmp;
                                    if (requeteurServeur == null)
                                    {
                                        requeteurServeur = C2iFactory.GetNewObjetForSession("CRequeteSNMPServeur", typeof(IRequeteSNMPServeur), eqptSpv.ContexteDonnee.IdSession) as IRequeteSNMPServeur;
                                    }
                                    if (champSNMP != null && champSNMP.OID != null && champSNMP.OID.Length > 0 &&
                                        champSNMP.FormuleIndex != null)
                                    {
                                        CContexteEvaluationExpression ctxFormule = new CContexteEvaluationExpression(relChamp.ElementAChamps);
                                        CResultAErreur resTmp = champSNMP.FormuleIndex.Eval(ctxFormule);
                                        if (resTmp)
                                        {
                                            try
                                            {
                                                int             nIndex  = Convert.ToInt32(result.Data);
                                                string          strOid  = champSNMP.OID + "." + nIndex.ToString();
                                                CRequeteSnmpOID requete = new CRequeteSnmpOID(strIP, strCommunaute, strOid);

                                                requeteurServeur.SetValue(requete, relChamp.Valeur);
                                            }
                                            catch { }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }