URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7236
[ Назад ]

Исходное сообщение
"Внешний запуск ifconfig"

Отправлено susanin , 06-Мрт-08 01:03 
Приветствую всех!
У меня возникла необходимость программно вызывать ifconfig. Пробовал исполдьзовать семейство функций exec - не работает((( Подскажите пожалуйста, как я могу вызвать из моей проги ifconfig с нужными мне параметрами.
Заранее благодарен

Содержание

Сообщения в этом обсуждении
"Внешний запуск ifconfig"
Отправлено phpcoder , 06-Мрт-08 07:50 
>Приветствую всех!
>У меня возникла необходимость программно вызывать ifconfig. Пробовал исполдьзовать семейство функций exec

Одна из самых распространённых ошибок новичков.

>- не работает((( Подскажите пожалуйста, как я могу вызвать из моей
>проги ifconfig с нужными мне параметрами.

popen(), system()


"Внешний запуск ifconfig"
Отправлено hellbat , 06-Мрт-08 11:22 
>>Приветствую всех!
>>У меня возникла необходимость программно вызывать ifconfig. Пробовал исполдьзовать семейство функций exec
>
>Одна из самых распространённых ошибок новичков.
>
>>- не работает((( Подскажите пожалуйста, как я могу вызвать из моей
>>проги ifconfig с нужными мне параметрами.
>
>popen(), system()

system() в своих программах лучше не использовать, ибо не безопасно.


"Внешний запуск ifconfig"
Отправлено susanin , 06-Мрт-08 22:41 
>[оверквотинг удален]
>>>У меня возникла необходимость программно вызывать ifconfig. Пробовал исполдьзовать семейство функций exec
>>
>>Одна из самых распространённых ошибок новичков.
>>
>>>- не работает((( Подскажите пожалуйста, как я могу вызвать из моей
>>>проги ifconfig с нужными мне параметрами.
>>
>>popen(), system()
>
>system() в своих программах лучше не использовать, ибо не безопасно.

Спасибо за помощь. С помощью popen() все работает :)


"Внешний запуск ifconfig"
Отправлено jd2 , 07-Мрт-08 05:59 
что в ней небезопасного?

"Внешний запуск ifconfig"
Отправлено Аноним , 08-Мрт-08 04:16 
>что в ней небезопасного?

Полагаю, это:

const char *interface_name = "eth";
int interface_id = 0;

sprintf(buf, "ifconfig %s%d down", interface_name, interface_id);
system(buf);

а теперь interface_name = "; rm -rf / ;"

В общем можно, только осторожно.


"Внешний запуск ifconfig"
Отправлено hellbat , 08-Мрт-08 13:32 
>[оверквотинг удален]
>
>const char *interface_name = "eth";
>int interface_id = 0;
>
>sprintf(buf, "ifconfig %s%d down", interface_name, interface_id);
>system(buf);
>
>а теперь interface_name = "; rm -rf / ;"
>
>В общем можно, только осторожно.

Это уже не функция небезосна, а программист данные не проверил. Я немного про другое.
system() использует переменную окружения PATH для поиска запускаемого бинарника,
которую можно легко подделать.


"Внешний запуск ifconfig"
Отправлено hellbat , 08-Мрт-08 15:53 
>const char *interface_name = "eth";
>int interface_id = 0;
>
>sprintf(buf, "ifconfig %s%d down", interface_name, interface_id);
>system(buf);

К тому же лучше всегда использовать snprintf, сам долго отвыкал от sprintf)