powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# + snmp
1 сообщений из 1, страница 1 из 1
c# + snmp
    #38078979
pog0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Подскажите пожалуйста как по SNMP можно вытащить с коммутатора его MAC-адрес?

На снимке указан пусть до нужного параметра (27 строчка записи)



Но при запуске программа мне возвращает "No results received.". Хотя если закомментировать строку "".1.3.6.1.2.1.2.2.1.27" // MAC", то программа возвращает остальные параметры устройства.

Подскажите пожалуйста, в чём может быть проблема? Может я неправильно обращаюсь к записи в таблице или вывожу неправильно информацию из таблицы?

Код представлен ниже.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
private void AskButtonClick(object sender, EventArgs e)
{
	//к кому будем обращаться
	string host = String.Empty;
	if (hostTextBox.Enabled)
		host = hostTextBox.Text;
	if (addressesListBox.SelectedIndex != -1 && addressesListBox.Enabled)
		host = (string) addressesListBox.Items[addressesListBox.SelectedIndex];
	//если не все поля заполнены, то говорим, что было б неплохо заполнить
	if (host == String.Empty || communityTextBox.Text.Length == 0)
	{
		MessageBox.Show("Host or community strings are empty. Enter some values", "Error",
		MessageBoxButtons.OK,
		MessageBoxIcon.Error);
		return;
	}
	//очищаем область ответа
	responseTextBox.Text = "";
	string community = communityTextBox.Text;
	//создаем запрос
	var snmp = new SimpleSnmp(host, community);
	//если запрос не валиден, то пишем об этом
	if (!snmp.Valid)
	{
		responseTextBox.Text += Resources.Not_Valid_SNMP_HOST;
		return;
	}
	//формируем тело запроса и отсылаем его
	Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.Ver2, new[]
		{
			//".1.3.6.1.2.1"/*,
			".1.3.6.1.2.1.1.1.0", // sysDescr
			".1.3.6.1.2.1.1.5.0", // sysName
			".1.3.6.1.2.1.1.3.0", // upTime
			".1.3.6.1.2.1.2.1.0", // available interfaces count
			".1.3.6.1.2.1.1.4.0", // sysContact,
			".1.3.6.1.2.1.2.2.1.27" // MAC
			//".1.3.6.1.2.1.1.6.0"  // sysLocation)
			//*/
		});
	//если нет ответа, то так и скажем
	if (result == null)
	{
		responseTextBox.Text += Resources.NoResults;
		return;
	}
	//счетчик для форматирования
	int i = 0;
	foreach (var kvp in result)
	{
		//если есть ответ, то выводим
		switch (i)
		{
			case 1: responseTextBox.Text += "System Name:";
				break;
			case 2: responseTextBox.Text += "Uptime:";
				break;
			case 3: responseTextBox.Text += "Interfaces available:";
				break;
			case 4: responseTextBox.Text += "Contact:";
				break;
			case 5: responseTextBox.Text += "MAC:";
				break;
		};
		responseTextBox.Text += kvp.Value;
		responseTextBox.Text += "\r\n";
		i++;
		responseTextBox.Text += "=========================\r\n";
	}     
}
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# + snmp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]