3800
Krfb autostart (VNC-сервер)
Здравствуйте. VNC-сервер Krfb хочу иметь включенным постоянно, в том числе после перезагрузки. У меня Manjaro ARM c KDE (на Raspberry Pi 4). Столкнулся с изобретением велосипеда — настройкой автозагрузки.
Сам по себе автоматический старт в System Settings — Workspace — Startup and Shutdown — Autostart в настройках прост и понятен, только программа запускается некорректно — до подключения к беспроводной сети, а потому сервер получает адрес 127.0.0.1 и дальнейшие попытки подключения к ней дают ошибку подключения. Программа не восстанавливает статус, после установки беспроводного подключения. В автозагрузку хочу положить скрипт, который мониторит статус wlan0 из выдачи ip link. Если это написать не просто, можно просто сделать задержку в несколько секунд. Не умею, к сожалению, даже это. Что учить-то что, написание bash-скриптов, python-скриптов? Лезть всякий раз включать сервер по ssh тоже вариант так себе.
Сейчас думаю, что возможно есть решения проще и надёжней — другие более надежные vnc-серверы. Буду рад любым советам, если Krfb не лучший выбор.
Сам по себе автоматический старт в System Settings — Workspace — Startup and Shutdown — Autostart в настройках прост и понятен, только программа запускается некорректно — до подключения к беспроводной сети, а потому сервер получает адрес 127.0.0.1 и дальнейшие попытки подключения к ней дают ошибку подключения. Программа не восстанавливает статус, после установки беспроводного подключения. В автозагрузку хочу положить скрипт, который мониторит статус wlan0 из выдачи ip link. Если это написать не просто, можно просто сделать задержку в несколько секунд. Не умею, к сожалению, даже это. Что учить-то что, написание bash-скриптов, python-скриптов? Лезть всякий раз включать сервер по ssh тоже вариант так себе.
Сейчас думаю, что возможно есть решения проще и надёжней — другие более надежные vnc-серверы. Буду рад любым советам, если Krfb не лучший выбор.
7 комментариев
bash.org
припомнил про атрибут исполняемого файла
И где-то с 10-15 попыток с массой ошибок, промежуточных тестов, гугления и перезагрузок у меня получилось! :) Какой же я криворукий/медленный!
Не понял, почему-то из скрипта программа требует абсолютный путь, а не как в терминале. Вспомнил, что есть команда which. В общем, терпение и труд сё перетрут! Ещё раз благодарю за подсказку. Кстати, если я все-таки хотел бы распарсить результат выполнения ip link (wlan0, state UP|DOWN) мне поможет изучить утилиту grep? Хотел бы в цикле с малой задержкой поймать момент подключения точнее.
это нормально
не понял
ты хочешь создать скрипт, который будет мониторить состояние wlan0 и когда оно будет соответствовать условию, выполнить /usr/bin/krfb -qwindowtitle %c %i --nodialog? это конечно гораздо элегантнее, нежели использовать sleep, но и гуглить придется подольше. думаю смотреть стоит в сторону systemd
Никто не запрещает, занимайся))
bash.org
Вот скрипт с ip link и grep:
Должно работать.
И в Вашем скрипте незачем дергать bash, posix-shell вполне достаточно. Да, sh часто бывает симлинком на bash, но не всегда.
Вчера делал самостоятельные попытки, получил выражение, дающее в терминале строку UP|DOWN:
Мой код не работал потому, что я не мог из этой выдачи получить логическое сравнение результата с UP. Надо было составить логическое выражение для while, а как? Для меня sh и bash пока что-то новое и разницу не понял (кроме того, что это разные языки). Я немного изучал Python 3, было бы интересно сделать это и на нем.
В процессе испытаний открыл для себя некоторые особенности Krfb: сохраненный пароль сбрасывается при выдаче другого ip (может быть фича, но сомнительная). Очень скромные возможности командной строки. Хочется настройки ip адреса, порта и пароля из командной строки. И не очевидным образом работает Enable Unattended Access с паролем (пароль, отличающийся от основного не принимается, не совсем понятно, чего хотели авторы). Здесь начинаешь понимать: хочешь больше — помоги сделать это разработчикам (можно работой, можно деньгами, багрепорт — вряд ли). Не знаю, по силам ли это мне, но можно попробовать заглянуть в код.
While будет выполняться до тех пор пока выражение истинно, то есть возвращает 0.
Разница в башизмах. Bash обратно совместим с posix-shell, но добавляет свое. Какой-нибудь dash при их виде в шеллскрипте, естественно, вывалится с ошибкой. Для этого существует shebang, указывающий конкретный интерпретатор. Но в каком-нибудь tinycore может оказаться голый busybox, расширения bash не реализующий.
То есть это в первую очередь вопрос максимальной переносимости.
Не лучше ли взять реализацию не являющуюся частью кед? В составе KDE пытаются реализовать вообще все, при этом часть софта выглядит как откровенные затычки. Посмотрите в сторону standalone-проектов вроде того же x11vnc. Там и сервис системды в пакете есть с вот таким содержимым:
Согласен, пришел к выводу, что krfb мне не подходит. Как говорится, будем искать дальше :) Большое спасибо за помощь и участие!!!