Последнее время слишком часто приходится использовать обозначенный teamviewer для удовлетворения различных теть-маш. Самой удобной получилась схема: "Зайдите на сайт teamviewer.com - скачайте - запустите - скажите id и пароль - не думайте ни о чем." Большой плюс также состоит в необязательности публичного ip-адреса у абонента - все через сторонний сервер и нахаляву, заметим.
Соответственно, под линукс сей продукт имеется. Он бодро функционирует под само-притащенным вайном. Т.е. подключаться к людям я могу. А вот подключаться ко мне совсем не надо даже и пытаться. Меж тем, вьюер последних версий напрочь отказывается работать без запущенного демона teamveiwerd. Демона, проприетарного, от рута запущенного, постоянно висящего. Упс - там еще ключи от квартиры надо положить для полного счастья. Паранойя негодуе.
Но жить как-то надо все же. Решено, исходя из стыдливой оговорки "один раз не это самое", подпереть тревожность костылем на баше. Пусть уж раз нужен ему рут, этот рут там будет, только когда я его использую.
Костыль состоит из двух частей. Первая - файлик tv в /etc/sudoers.d:
Код: Выделить всё
%users ALL= NOPASSWD: /bin/systemctl * teamviewerd.service
А запускать вьюер надо через /usr/local/bin/tv_wd:
Код: Выделить всё
#!/bin/bash
daemon_bin="teamviewerd"
tv_bin="TeamViewer.exe"
proc_pids() {
echo "$(ps -o pid= -C $1)"
}
d_ctl() {
sudo /bin/systemctl $1 "$daemon_bin".service >/dev/null 2>&1
echo $?
}
[ -n "$(proc_pids $tv_bin)" ] && exit # could be only one instance
[ $(d_ctl status) -ne 0 ] && d_ctl start >/dev/null 2>&1
sleep 1
/opt/teamviewer/tv_bin/script/teamviewer >/dev/null 2>&1 &
while true; do
sleep 10
if [ -z "$(proc_pids $tv_bin)" ]; then
d_ctl stop >/dev/null 2>&1
break;
fi
done
Получилась сторожилка демона: запускаем сервис, запускаем вьюер, пока есть процесс вьюера, демон не завершаем - караулим.
/Еще конечно не забыть от рута отменить запуск демона при загрузке системы./
P.S. Не, ну понятно, что для полной контрацепции такую вещь в отдельной виртуалке надо запускать. Но вроде как эти ребята еще не замечены в гадостях. Значит пока такой баланс доверия.