Russian Qt Forum

Qt => Общие вопросы => Тема начата: qtист от Апрель 29, 2009, 10:10



Название: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: qtист от Апрель 29, 2009, 10:10
Почему QProcess не выполняет команду ifconfig. ???

Код
C++ (Qt)
QProcess *pr;
.......
pr= new QProcess();
pr->start("ifconfig",QStringList() << "eth0 120.0.0.1 netmask 255.255.0.0");
 



Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Admin от Апрель 29, 2009, 10:15
1) пропишите полный путь - типа /usr/bin/ifconfig
2) если у вас Debian - то смотри п.1 - у них мягкое запрещение на запуск этой команды.


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Tonal от Апрель 29, 2009, 10:20
Может всё таки так
Код
C++ (Qt)
pr->start("ifconfig", QStringList()<<"eth0"<<"120.0.0.1"<<"netmask"<<"255.255.0.0");
 
или так:
Код
C++ (Qt)
pr->start("ifconfig", QString("eth0 120.0.0.1 netmask 255.255.0.0").split(" "));
 


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: qtист от Апрель 29, 2009, 10:24
1) пропишите полный путь - типа /usr/bin/ifconfig
2) если у вас Debian - то смотри п.1 - у них мягкое запрещение на запуск этой команды.

2. Да,Debian.
1. грит нет такого файла или директории.

 :'( а что такое "мягкое запрещение"?


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: qtист от Апрель 29, 2009, 10:30
Может всё таки так
Код
C++ (Qt)
pr->start("ifconfig", QStringList()<<"eth0"<<"120.0.0.1"<<"netmask"<<"255.255.0.0");
 
или так:
Код
C++ (Qt)
pr->start("ifconfig", QString("eth0 120.0.0.1 netmask 255.255.0.0").split(" "));
 



по-барабану


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Admin от Апрель 29, 2009, 15:04
Мягкое - это запрет прямого запуска - вот пример:

Цитировать
unknown% ifconfifg
zsh: command not found: ifconfifg
unknown% whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
unknown% whereis ifconfig
unknown% /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:17:31:d7:7a:23
          inet addr:192.168.1.1  Bcast:192.168.133.255  Mask:255.255.255.0
          inet6 addr: fe80::217:31ff:fed7:7a08/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:288579322 errors:0 dropped:0 overruns:0 frame:0
          TX packets:125884278 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3900113600 (3.6 GiB)  TX bytes:288810148 (275.4 MiB)
          Interrupt:23 Base address:0xc000


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: TukiNov от Апрель 29, 2009, 21:09
для выполнения ifconfig нужны привилегии рута


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Admin от Апрель 29, 2009, 23:34
не нужны
если тока вы в системе ничего менять не будете

но в Debian нада полный путь выбирать!


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Swappp от Апрель 30, 2009, 01:51
Цитировать
не нужны
все, что лежит в sbin не предназначено для обычных пользователей, по тому /sbin и /usr/sbin не прописывается а PATH у обычных пользователей... Но стоит зайти под рутом, как в PATH появляются эти два каталога. Так что дебиан тут не причем, все так и должно работать. Хотя в дистрибутивах, где фактически запрещен логин под рутом (ubuntu например) дела обстоят иначе.
Цитировать
если тока вы в системе ничего менять не будете
А зачем еще ifconfig нужен? Табличку интерфейсов посмотреть? Так ее и с помощью netstat посмотреть можно, например netstat -ie, единственное, не знаю, можно ли вывести информацию по одному указанному интерфейсу.


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: qtист от Апрель 30, 2009, 09:11
В общем вот так получилось:
sudo пароль спрашивает - пришлось править файл sudoers.
QProcess не отрабатывает,а вот так работает:

Код
C++ (Qt)
system("sudo /sbin/ifconfig eth0 120.0.0.1 netmask 255.255.0.0");


как бы обойтись без правки файла sudoers,ибо программа
специализированная для определенного круга лиц,
и влезать в этот файл чё-то мне не нравится :(


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Sergeich от Апрель 30, 2009, 21:48
Думаю, самое элегантное решение - заюзать D-Bus. Погуглив, нашел кое-какие спеки: http://projects.gnome.org/NetworkManager/developers/spec.html Но это все мои предположения, поскольку линуха счас под рукой нет и в ближайшее время не предвидится. Если че нароешь на эту тему - сообщи, любопытно.


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Swappp от Апрель 30, 2009, 23:41
как бы обойтись без правки файла sudoers,ибо программа
специализированная для определенного круга лиц,
и влезать в этот файл чё-то мне не нравится :(
Запускать ее из под рута... Либо читать про setuid-бит. Тут программа хочет лезть туда, куда обычному юзеру не положено. Так что над как-то получить больше привилегий.


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: nixman05 от Май 02, 2009, 12:26
как бы обойтись без правки файла sudoers,ибо программа
специализированная для определенного круга лиц,
и влезать в этот файл чё-то мне не нравится :(
Запускать ее из под рута... Либо читать про setuid-бит. Тут программа хочет лезть туда, куда обычному юзеру не положено. Так что над как-то получить больше привилегий.

Можно попробовать запускать kdesu  а  в качестве параметров передавать запуск ifconfig. При этом пользователю вначале будет предложено ввести пароль рута, а затем, при его корректности, произойдет выполнение команды.


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: ритт от Май 07, 2009, 08:56
Swappp всё сказал.
если программе нужно больше привелегий, чем имеет юзверь, её запустивший, это не проблема программы, а проблема одмина...или того-самого юзверя.
если ifconfig нужен только для вывода инфы, лучше воспользоваться чем-то менее...ммм...одминским.

Sergeich, NetworkManager должен быть настроен и запущен в системе. ради одной программульки жирно ставить, а по дефолту оно сейчас редко где ставится (сыровато ещё)...


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Alex Custov от Май 07, 2009, 19:18
в дополнение к предыдущим ораторам могу сказать, что сеть принято настраивать через /etc/network/interfaces, так гораздо удобнее имхо. И не будет проблем с сервисом networking.


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: ритт от Май 07, 2009, 20:51
#cat /etc/network/interfaces
cat: /etc/network/interfaces: No such file or directory

принятно настраивать где? в дэбине/бубунте?
и в системных требованиях к программе написать: бубунта :)


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Alex Custov от Май 07, 2009, 21:23
с другой стороны /etc/network/interfaces более распространён. А настроить сеть чтобы было кроссдстрибутвно я даже не знаю как. Возможно только скриптом-обёрткой, который будет проверять дистрибутив. В федоре так, в генте сяк, в дебиане эдак :o


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Alex Custov от Май 07, 2009, 21:24
#cat /etc/network/interfaces
cat: /etc/network/interfaces: No such file or directory

принятно настраивать где? в дэбине/бубунте?
и в системных требованиях к программе написать: бубунта :)

Кстати а в генте тогда откуда ifup берёт параметры?


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: ритт от Май 08, 2009, 00:04
а QNetworkInterface::allInterfaces() не то, что нужно делает?


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: Swappp от Май 08, 2009, 02:23
Кстати а в генте тогда откуда ifup берёт параметры?
/etc/conf.d/net
Но синтаксис там совершенно другой, и поднятие интерфейсов происходит несколько иначе.


Название: Re: QProcess не выполняет команду ifconfig ( QT 4.5)
Отправлено: ритт от Май 08, 2009, 04:58
"несколько" иначе" :)
...если вспомнить модульную структуру настроек сети и возможность прописывать пре- и постфункции прямо в конфиге...