// 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); }
//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); }
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); }
//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); }
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(); }
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; }
////////////////////////////////////////////////////////////////// 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 { } } } } } } } } } }