Ошибка вызова route из программы C#
От: DjoBlakk  
Дата: 16.07.12 06:53
Оценка:
Добрый день.
Написал функцию добавления нового маршрута (для Ubuntu).
При запуске получаю следующую ошибку

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

Добавил исключение в sudoers, чтобы не запрашивал пароль для 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();
        
        }


Причем при вызове "route add ..." из терминала такая же ошибка, при записи "sudo route add ..." нет ошибки и не запрашивается пароль.

Как избавить от ошибки?
Re: Ошибка вызова route из программы C#
От: Doom100500 Израиль  
Дата: 16.07.12 11:19
Оценка:
Здравствуйте, DjoBlakk, Вы писали:

DB>Добрый день.

DB>Написал функцию добавления нового маршрута (для Ubuntu).
DB>При запуске получаю следующую ошибку

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


DB>Как избавить от ошибки?


а если запустить /bin/sh с командной строкой "sudo route add...."
Спасибо за внимание
Re[2]: Ошибка вызова route из программы C#
От: DjoBlakk  
Дата: 16.07.12 12:11
Оценка:
Здравствуйте, Doom100500, Вы писали:

D>а если запустить /bin/sh с командной строкой "sudo route add...."


Попробовал пишет:

bin/sh: 0: Can't open sudo
Re[3]: Ошибка вызова route из программы C#
От: Doom100500 Израиль  
Дата: 16.07.12 12:17
Оценка:
Здравствуйте, DjoBlakk, Вы писали:

DB>Здравствуйте, Doom100500, Вы писали:


D>>а если запустить /bin/sh с командной строкой "sudo route add...."


DB>Попробовал пишет:


DB> bin/sh: 0: Can't open sudo


Ну так он пытается открыть файл "sudo" почему бы не почитать man? в командной строке пиши "-c sudo route add..." опция -c говорит выполнить команду из следующей строки.
Спасибо за внимание
Re[4]: Ошибка вызова route из программы C#
От: Аноним  
Дата: 17.07.12 05:45
Оценка:
D>Ну так он пытается открыть файл "sudo" почему бы не почитать man? в командной строке пиши "-c sudo route add..." опция -c говорит выполнить команду из следующей строки.

Я недавно начал работать с linux, поэтому некоторые ошибки не очевидны((

Почитал man, думаю как вариант можно запускать с опцией "-i" в отдельном потоке, а потом процессу передавать "sudo route add ...", но этот вариант отталкивает)

Буду дальше штудировать man)


Добавил опцию "-с", он понимает команду sudo, но следующие за ней параметры игнорирует.
Re[5]: Ошибка вызова route из программы C#
От: Doom100500 Израиль  
Дата: 17.07.12 06:49
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Добавил опцию "-с", он понимает команду sudo, но следующие за ней параметры игнорирует.


Попробуй всю командную строку после -c заключить в кавычки.
Спасибо за внимание
Re[6]: Ошибка вызова route из программы C#
От: Аноним  
Дата: 17.07.12 08:34
Оценка:
Здравствуйте, Doom100500, Вы писали:



D>Попробуй всю командную строку после -c заключить в кавычки.



Разобрался, спасибо!!!

Вот, что получилось:


ProcessStartInfo startInfo =new ProcessStartInfo("/bin/sh");
        
startInfo.Arguments = "-c 'sudo  $0 $1 $2 $3 $4 $5 $6' route add 192.168.1.155 gw 192.168.0.254 eth0";
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.