LINUX.ORG.RU

Автозапуск приложения и UDP порт


0

1

Доброго времени суток всем! Читала здесь темы про автозапуск, что то из этого мы делали - не получилось. Суть в том, что у нас есть исполняемый файл программы, созданной в Qt. Программка несложная, прослушивает UDP порт и по приходу определенного пакета, подаёт сигнал на завершение работы. Так вот, надо чтобы эта программа запускалась сама при загрузке системы. Но это полбеды: мы пробовали просто в /.config/autostart , запускается, но есть одно «но»: если запускается от имени user, то почему порт UDP (161) недоступен и не прослушивается. А от имени root почему то не запускается :(. Вот надо сделать, чтобы либо прога запускалась из под root либо чтобы UDP был доступен при запуске программы от имени user. Кто нибудь может помочь с этим? Еще создавали ярлык на рабочем столе с командой на запуск программы и помещали его в /etc/xdg/autostart - тоже не работает. Да, забыла написать, что у нас используется Astra Linux, но он подобен Debian

Ответ на: комментарий от registrant

нельзя, в плате заложено,что именно на этот порт идут данные. Ставили порт 5000 - работает, но это не устраивает

Aline_u
() автор топика
Ответ на: комментарий от registrant

поняла, что нужно выполнить команду до запуска моей программы, а как это реализовать? Программа то должна запускаться в автозапуске или надо скрипт написать для разрешения доступа к портам и сначала выполнить скрипт,а потом запускать прогу?

Aline_u
() автор топика
Ответ на: комментарий от Aline_u

setcap сохраняет разрешения в расширенных атрибутах на файловой системе. т.е. операция разовая, пока прогу не обновишь

registrant ★★★★★
()
Последнее исправление: registrant (всего исправлений: 1)
Ответ на: комментарий от registrant

но мне еще интересно, почему из под root не запускается? Программу компилируюиз под root, в автозапуске ссылки тоже из под root, а программу не видать...

Aline_u
() автор топика
Ответ на: комментарий от Aline_u

я не понял, в автозагрузку к root добавлен путь к программе? или у юзера в автозагрузке висит, что нужно пустить от имени root?

registrant ★★★★★
()
Последнее исправление: registrant (всего исправлений: 1)

созданной в Qt

Оно X не хочет? Может сервер позже запускается? В любом случае надо логирование встроить.

anonymous
()
Ответ на: комментарий от Aline_u

но мне еще интересно, почему из под root не запускается?

это надо к экстрасенсам идтить. ну или лог запуска показать

false ★★★★★
()
Ответ на: комментарий от registrant

В /etc/xdg/autostart разместила ярлык для своей программы, сам исполняемый файл лежит в /usr/bin . Qt запускала от имени root и компилила программу, собрала, получила релиз. И вот этот исполняемый файл и пытаюсь запустить. Т.е. если его просто самому запускать, то всё срабатывает,а через Автозапуск прога не загружается. не знаю насколько понятно обрисовала ситуацию...

Aline_u
() автор топика
Ответ на: комментарий от generator

через local тоже не получилось, пробовали и выскочила ошибка, что такого типа приложения нельзя запустить (там выскакивает окно с сообщением), т.е. надо либо делить программу на 2 части: прослушивание порта и выдача сообщения, и тогда прослушивание пускать в автозапуск, а уже если словил пакет, то вызывать другую программу для показа сообщения; либо искать другие пути Автозагрузки

Aline_u
() автор топика
Ответ на: комментарий от Aline_u

не знаю насколько понятно обрисовала ситуацию...

ЯННП. какой пользователь должен запускать прогу? root или другой с его правами? иксы проге нужны?

registrant ★★★★★
()
Ответ на: комментарий от registrant

С Линуксом я не работала, сейчас только столкнулась с ним постольку, поскольку заказчикам нужна программа и под Линукс, поэтому приходится его осваивать. Для меня это пока совершенно незнакомая система. Могу сказать только, что мы тестируем на своей Виртуальной машине, логимся под user (Какие у него права - не знаю,скорее всего ограниченные,как у обычного пользователя). Но чтобы услышать порт, нам по любому надо программу запускать от имени root'а. Ну или пробовать ту команду, которую Вы показали по ссылке Что такое «иксы»?

Aline_u
() автор топика
Ответ на: комментарий от Aline_u

логимся под user (Какие у него права - не знаю,скорее всего ограниченные,как у обычного пользователя). Но чтобы услышать порт, нам по любому надо программу запускать от имени root'а

тогда у проги д.б. установлен suid-бит, либо пускать ее через sudo. но через setcap лучше - запускать прогу с излишними привилегиями не стоит.

Что такое «иксы»?

графический режим. проге он нужен, или она и в консоли работать будет?

registrant ★★★★★
()
Ответ на: комментарий от registrant

графический режим нужен с sudo и sudoyers в пятницу разбирались - что то как то не очень получилось:(

Aline_u
() автор топика
Ответ на: комментарий от generator

выполнила команду

echo «/path/to/command --parameters» >> /etc/rc.local

выполнила команду: прога как не загружалась так и не загружается, хотя строка rc.local появилась, но почему то после Exit 0. На попытки переставить строки местами и сохранить файл, пишет, что файл не может быть открыт

Aline_u
() автор топика
Ответ на: комментарий от registrant

для setcap оказывается надо библиотеку поставить

Aline_u
() автор топика

а ежели у той программы порт 161 какбы говорит нам, что где-то имеет место snmp, то не лучше ли туда присобачить тулзы для работы с snmp, а не городить костыли?

anonymous
()
Ответ на: комментарий от Aline_u

Что в ~/.xsession-errors? Текст «ярлыка» .desktop для программы можете привести? Можно без пути к исполняемому файлу.

Кстати, зачем программе требуются права root? Если только для работы на 161 порту, то setcap решает.

Kiborg ★★★
()
Ответ на: комментарий от Kiborg

Я даже не знаю где смотреть ~/.xsession-errors :) Ребята что то смотрели, в общем какая то ошибка связанная с визуализацией А текст ярлыка... там и текста то особо нет: название и путь к исполняемому файлу ( в смысле команда) Для setcap я так понимаю надо еще библиотеку ставить? Но пока как оказалось мы даже не можем автозапуском просто запустить программу графическую, с консолью вроде таких проблем не должно быть есть мысли переделать под консольное приложение

Aline_u
() автор топика
Ответ на: комментарий от Aline_u

Ну, напишите/позвоните уже в саппорт. Вам же на другом форуме сказали. Вашего письма уже ждут которые сутки.

mkv457vv
()

вам нужен кто-то, кто разбирается в линуксе, на пять минут. обьясните ему внятно задачу. чего именно вы пытаетесь достичь? что делает ваша программа? в каком окружении это должно работать?

вашей программе не должен быть нужен Х. а сейчас вы собрали ее так, что нужен. если не хотите пересобирать нормально, или если Х действительно нужен, вам нужно добавить «DISPLAY=:1 /path/to/binary» в автозапуск. где этот автозапуск зависит от вашего окружения (ну хотя бы дистрибутив знаете?) и от текущих настроек. рекомендую все же начать с нормального обтьяснения чего вы хотите добиться в итоге от этого рпиложения? вероятно, есть намного более правильный вариант

val-amart ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.