Перейти к содержанию
    

Передача во внешнюю оболочку SHELL команд сформированных в программке.

Здравствуйте!!!

Нужно написать программку, которая будет менять IP, NETMASK, GW, UP/DOWN сетевого устройства системы.

Все это умеет делать программа ifconfig.

Можно както, используя ее возможности, из своей программки менять параметры сетевого интерфейса?

Я думаю както можно во внешнюю оболочку SHELL передавать команды сформированные в моей программке.

Подскажите, где можно это почитать, буду рад примерчику.

Спасибо!!! :rolleyes:

Изменено пользователем Oops

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте!!!

Нужно написать программку, которая будет менять IP, NETMASK, GW, UP/DOWN сетевого устройства системы.

Все это умеет делать программа ifconfig.

Можно както, используя ее возможности, из своей программки менять параметры сетевого интерфейса?

Я думаю както можно во внешнюю оболочку SHELL передавать команды сформированные в моей программке.

Подскажите, где можно это почитать, буду рад примерчику.

Спасибо!!! :rolleyes:

 

Раз Вы не написали, на каком языке собираетесь писать, изложу независимый вариант - Вы создаете в определенной директории текстовый файл, который читается скриптом, запускаемым кроном... А этот скрипт и делает всю работу... Примерно, как lpd.. Особые права только у скрипта...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Раз Вы не написали, на каком языке собираетесь писать, изложу независимый вариант - Вы создаете в определенной директории текстовый файл, который читается скриптом, запускаемым кроном... А этот скрипт и делает всю работу... Примерно, как lpd.. Особые права только у скрипта...

 

Пишу в Netbeans на C. Понятно что скрипт можно написать, а вот как ему из программки передать например IP или MASK и тп. чтобы он их подхватил и присвоил.

 

man execv

 

Спасибо, почитаю :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, почитаю :rolleyes:

 

Вот на русском и с примерами http://www.ibm.com/developerworks/ru/library/au-unixprocess/

а в Листинг4 помоему то что вам нужно

 

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот на русском и с примерами http://www.ibm.com/developerworks/ru/library/au-unixprocess/

а в Листинг4 помоему то что вам нужно

Спасибо!!! :08:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то это не совсем то... Если Вы конечно хотите работать именно с оболочкой...

 

Нужно это...

popen();

system();

 

(добавил)P.S.: справедливости ради нужно добавить, что все современные учебники по UNIX-программированию не рекомендуют приведенные мной вызовы, как и работу с оболочкой вообще - в виду частых брешей в безопасности при написании таких программ. Потому метод приведенный sasamy подразумевает более грамотный подход решению поставленной задачи, хоть и несколько иным путем...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пишу в Netbeans на C. Понятно что скрипт можно написать, а вот как ему из программки передать например IP или MASK и тп. чтобы он их подхватил и присвоил.

Разве непонятно написала? Вы создаете текстовый файл

ip=192.....

mask = .....

....

Скрипт его читает. Выполняет... Или нет.

Потом стирает.

Потом проверяет его наличие.

Разница по сравнению с непосредственным вызовом в том, что Ваша программа не обязательно должна запускаться от root'а. А только скрипт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а ещё можно из бизибокса сокетных функций надёргать, и никаких шеллов не надо

http://git.busybox.net/busybox/tree/networking/ifconfig.c

Изменено пользователем Idle

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И выполняемый процесс должен быть от root'а, иначе с правами доступа проблема.

Можно и не скрипт, а файл текстовый читает ваша программа и порождает процессы запуска ifconfig с соответствующими параметрами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И выполняемый процесс должен быть от root'а, иначе с правами доступа проблема.

 

man sudo

man sudoers

 

PS в убунте пользователя root вообще нет по умолчанию, вернее он без пароля поэтому неактивен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...