Russian Qt Forum

Qt => Работа с сетью => Тема начата: bez_glaz от Август 22, 2012, 16:37



Название: MAC-адресс сетевых устройтсв
Отправлено: bez_glaz от Август 22, 2012, 16:37
Добрый день.
В общем есть у меня программка, в которой нужно, создавая TCP соединение к  устройству, вывести некую информацию от нём. И тут же должен быть и MAC-адресс. Сколько искал внятного ответа не нашёл. По теме нашёл http://www.prog.org.ru/topic_15343_0.html (http://www.prog.org.ru/topic_15343_0.html), как решение "в обход" я считаю. Но и тут не получилось
Код:
        console = new QProcess();
        console->start(QString::fromUtf8("/usr/share/applications/Терминал"),QStringList() << "nmap 192.168.0.108");
        console->waitForReadyRead();
        qDebug() << console->readAllStandardOutput();
Ничего не выводит и в дереве процессов ничего не добавляется. Может я не правильно пытаюсь реализовать этот метод ? Или есть другой способ решение моей проблемы по вычислению мака, зная TCP-соединение?


Название: Re: MAC-адресс сетевых устройтсв
Отправлено: Bepec от Август 22, 2012, 16:46
А вы посмотрите, процесс вообще запускается? state() посмотрите.

А с моментальным выводом в дебаг вы, думаю, поспешили. Мгновенно процесс скорее всего и не запустится :)
Насколько я помню сигнал readyReadStandardOutput () сигнализирует о выводе данных.


Название: Re: MAC-адресс сетевых устройтсв
Отправлено: andrew.k от Август 22, 2012, 20:41
запускать надо /bin/sh

Код
C++ (Qt)
console->start("/bin/sh -c nmap 192.168.0.108");


Название: Re: MAC-адресс сетевых устройтсв
Отправлено: NicK от Август 23, 2012, 12:31
Использование nmap только для определения MAC-адреса - слишком избыточно.
Думаю, гораздо проще брать mac из arp-таблицы, для этого сторонние утилиты вообще не нужны.  ;)


Название: Re: MAC-адресс сетевых устройтсв
Отправлено: andrew.k от Август 23, 2012, 12:48
Использование nmap только для определения MAC-адреса - слишком избыточно.
Думаю, гораздо проще брать mac из arp-таблицы, для этого сторонние утилиты вообще не нужны.  ;)
в arp-таблице его может и не оказаться.
и разве в ней присутствует запись о собственных интерфейсах? вроде нет.


Название: Re: MAC-адресс сетевых устройтсв
Отправлено: NicK от Август 23, 2012, 13:11
Использование nmap только для определения MAC-адреса - слишком избыточно.
Думаю, гораздо проще брать mac из arp-таблицы, для этого сторонние утилиты вообще не нужны.  ;)
в arp-таблице его может и не оказаться.
и разве в ней присутствует запись о собственных интерфейсах? вроде нет.

Я так понял, что речь идет об удаленных сетевых устройствах.
А собственные MAC-адреса можно получить через QNetworkInterface, для чего, опять же, nmap не нужен.


Название: Re: MAC-адресс сетевых устройтсв
Отправлено: andrew.k от Август 23, 2012, 13:23
Использование nmap только для определения MAC-адреса - слишком избыточно.
Думаю, гораздо проще брать mac из arp-таблицы, для этого сторонние утилиты вообще не нужны.  ;)
в arp-таблице его может и не оказаться.
и разве в ней присутствует запись о собственных интерфейсах? вроде нет.

Я так понял, что речь идет об удаленных сетевых устройствах.
А собственные MAC-адреса можно получить через QNetworkInterface, для чего, опять же, nmap не нужен.
Возможно, я как-то не подумал.
Тогда да, хорошая мысль. Только если так, то непонятно зачем это нужно. Т.к. если адреса из друго сегмента сети, то и мак-адресов не будет. Где их возьмешь то, да и зачем?


Название: Re: MAC-адресс сетевых устройтсв
Отправлено: Alex Custov от Август 23, 2012, 17:07
запускать надо /bin/sh

Код
C++ (Qt)
console->start("/bin/sh -c nmap 192.168.0.108");

даже без /bin/sh :)

Код
C++ (Qt)
console->start("nmap 192.168.0.108");


Название: Re: MAC-адресс сетевых устройтсв
Отправлено: andrew.k от Август 23, 2012, 17:53
запускать надо /bin/sh

Код
C++ (Qt)
console->start("/bin/sh -c nmap 192.168.0.108");

даже без /bin/sh :)
В натуре, че-то не сообразил)