Добрый день.
Написал функцию добавления нового маршрута (для 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 ..." нет ошибки и не запрашивается пароль.
Как избавить от ошибки?
Здравствуйте, DjoBlakk, Вы писали:
DB>Добрый день.
DB>Написал функцию добавления нового маршрута (для Ubuntu).
DB>При запуске получаю следующую ошибку
DB>SIOCADDRT:Операция не позволяется
DB>Как избавить от ошибки?
а если запустить /bin/sh с командной строкой "sudo route add...."
Здравствуйте, Doom100500, Вы писали:
D>а если запустить /bin/sh с командной строкой "sudo route add...."
Попробовал пишет:
bin/sh: 0: Can't open sudo
Здравствуйте, 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 говорит выполнить команду из следующей строки.
Здравствуйте, 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";