Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Ошибка вызова route из программы C#  (Прочитано 1269 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DjoBlakk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Добрый день.
Написал функцию добавления нового маршрута.
При запуске получаю следующую ошибку

Цитировать
SIOCADDRT:Операция не позволяется

Добавил исключение в sudo, чтобы не запрашивал пароль для route, но ничего не изменилось.

private static void AddRoute(string gateway, string destination)
        {
         
    ProcessStartInfo startInfo =new ProcessStartInfo("/sbin/route");

    startInfo.Arguments = string.Format("add -net {0} netmask 255.255.255.255 gw {1}", destination, gateway);
         
            Process p = Process.Start(startInfo);

            p.WaitForExit();
       
        }

В чём может быть проблема?

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Ошибка вызова route из программы C#
« Ответ #1 : 05 Июля 2012, 13:32:31 »
При запуске получаю следующую ошибку

Цитировать
SIOCADDRT:Операция не позволяется

Добавил исключение в sudo, чтобы не запрашивал пароль для route, но ничего не изменилось.
...

В чём может быть проблема?
Права ;)
(значит не то добавил в sudo ... или не туда ;))

- при отсутствии прав сообщение будет
Цитировать
SIOCADDRT: Операция не позволяется
- при ошибке синтаксиса сообщение будет
Цитировать
SIOCADDRT:  Недопустимый аргумент


Оффлайн DjoBlakk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Ошибка вызова route из программы C#
« Ответ #2 : 05 Июля 2012, 14:01:51 »
В sudoers была добавлена следующая строчка
Цитировать
getak ALL=NOPASSWD:/sbin/route

Вроде все правильно сделал)Но не работает

Причем у меня такая же ошибка происходит, когда через терминал добавляю маршрут.

Но все нормально (пароль не запрашивает) работает когда в терминале пишу
Цитировать
sudo route add -net ...


Значит нужно вызывать добавление маршрута через sudo в программе?

И как это сделать? 
« Последнее редактирование: 05 Июля 2012, 14:31:54 от DjoBlakk »

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Ошибка вызова route из программы C#
« Ответ #3 : 05 Июля 2012, 14:43:39 »
Значит нужно вызывать добавление маршрута через sudo в программе?

И как это сделать? 
для начала проверить:

- запуск программы от пользователя root ... ах да - вы ж с Ubuntu уродуетесь! ;) :( ... ну как-то так:
$ sudo mc
...

- запуск своей программы из-под sudo.

P.S. в любом случае, чтобы изменить таблицу маршрутизации ваша программа должна иметь права root, любым образом, можете попробовать поиграться с SUID-бит.
« Последнее редактирование: 05 Июля 2012, 14:53:17 от Olej »

 

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