Russian Qt Forum
Октябрь 02, 2024, 07:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QProcess не выполняет команду ifconfig ( QT 4.5)  (Прочитано 13773 раз)
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");
 

Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Апрель 29, 2009, 10:15 »

1) пропишите полный путь - типа /usr/bin/ifconfig
2) если у вас Debian - то смотри п.1 - у них мягкое запрещение на запуск этой команды.
Записан
Tonal
Гость
« Ответ #2 : Апрель 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(" "));
 
Записан
qtист
Гость
« Ответ #3 : Апрель 29, 2009, 10:24 »

1) пропишите полный путь - типа /usr/bin/ifconfig
2) если у вас Debian - то смотри п.1 - у них мягкое запрещение на запуск этой команды.

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

 Плачущий а что такое "мягкое запрещение"?
Записан
qtист
Гость
« Ответ #4 : Апрель 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(" "));
 



по-барабану
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #5 : Апрель 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
Записан
TukiNov
Гость
« Ответ #6 : Апрель 29, 2009, 21:09 »

для выполнения ifconfig нужны привилегии рута
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #7 : Апрель 29, 2009, 23:34 »

не нужны
если тока вы в системе ничего менять не будете

но в Debian нада полный путь выбирать!
Записан
Swappp
Гость
« Ответ #8 : Апрель 30, 2009, 01:51 »

Цитировать
не нужны
все, что лежит в sbin не предназначено для обычных пользователей, по тому /sbin и /usr/sbin не прописывается а PATH у обычных пользователей... Но стоит зайти под рутом, как в PATH появляются эти два каталога. Так что дебиан тут не причем, все так и должно работать. Хотя в дистрибутивах, где фактически запрещен логин под рутом (ubuntu например) дела обстоят иначе.
Цитировать
если тока вы в системе ничего менять не будете
А зачем еще ifconfig нужен? Табличку интерфейсов посмотреть? Так ее и с помощью netstat посмотреть можно, например netstat -ie, единственное, не знаю, можно ли вывести информацию по одному указанному интерфейсу.
Записан
qtист
Гость
« Ответ #9 : Апрель 30, 2009, 09:11 »

В общем вот так получилось:
sudo пароль спрашивает - пришлось править файл sudoers.
QProcess не отрабатывает,а вот так работает:

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


как бы обойтись без правки файла sudoers,ибо программа
специализированная для определенного круга лиц,
и влезать в этот файл чё-то мне не нравится Грустный
Записан
Sergeich
Гость
« Ответ #10 : Апрель 30, 2009, 21:48 »

Думаю, самое элегантное решение - заюзать D-Bus. Погуглив, нашел кое-какие спеки: http://projects.gnome.org/NetworkManager/developers/spec.html Но это все мои предположения, поскольку линуха счас под рукой нет и в ближайшее время не предвидится. Если че нароешь на эту тему - сообщи, любопытно.
Записан
Swappp
Гость
« Ответ #11 : Апрель 30, 2009, 23:41 »

как бы обойтись без правки файла sudoers,ибо программа
специализированная для определенного круга лиц,
и влезать в этот файл чё-то мне не нравится Грустный
Запускать ее из под рута... Либо читать про setuid-бит. Тут программа хочет лезть туда, куда обычному юзеру не положено. Так что над как-то получить больше привилегий.
Записан
nixman05
Гость
« Ответ #12 : Май 02, 2009, 12:26 »

как бы обойтись без правки файла sudoers,ибо программа
специализированная для определенного круга лиц,
и влезать в этот файл чё-то мне не нравится Грустный
Запускать ее из под рута... Либо читать про setuid-бит. Тут программа хочет лезть туда, куда обычному юзеру не положено. Так что над как-то получить больше привилегий.

Можно попробовать запускать kdesu  а  в качестве параметров передавать запуск ifconfig. При этом пользователю вначале будет предложено ввести пароль рута, а затем, при его корректности, произойдет выполнение команды.
Записан
ритт
Гость
« Ответ #13 : Май 07, 2009, 08:56 »

Swappp всё сказал.
если программе нужно больше привелегий, чем имеет юзверь, её запустивший, это не проблема программы, а проблема одмина...или того-самого юзверя.
если ifconfig нужен только для вывода инфы, лучше воспользоваться чем-то менее...ммм...одминским.

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

Сообщений: 2063


Просмотр профиля
« Ответ #14 : Май 07, 2009, 19:18 »

в дополнение к предыдущим ораторам могу сказать, что сеть принято настраивать через /etc/network/interfaces, так гораздо удобнее имхо. И не будет проблем с сервисом networking.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.191 секунд. Запросов: 23.