Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Помогите реализовать "хотелку"  (Прочитано 1123 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dr.Faust

  • Автор темы
  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Помогите реализовать "хотелку"
« : 18 Октября 2010, 10:58:38 »
Как и многие работаю за несколькими машинами. Естественно хотелось бы юзать одни и те же проги с одними и теми же профилями.
Как и многие использую для этого (синхронизации профилей) Dropbox.
Но хочется локального решения.
В целом идея следующая.

1 Берём флэшку и создаём на ней диск под профили. Дааём ему лэйблу, ну скажем token-system.
2 В /etc/udev/rules.d добавляем файл 90-tokens.rules со следующими правилами:
ACTION=="add", ENV{ID_FS_LABEL}=="token-system", RUN="/usr/sbin/tokenscontrol add"
ACTION=="remove", ENV{ID_FS_LABEL}=="token-system", RUN+="/usr/sbin/tokenscontrol remove"
3 В /etc/fstab строку:
LABEL=token-system  /mnt/token-system  ext4  defaults,noauto,noatime  0  24 В /usr/sbin файл tokenscontrol:
#!/bin/bash

if [ $1 = "add" ]
then
# Монтируем основную файловую систему
mount /mnt/token-system
# Передаём управление скриптам токена
/mnt/token-system/system/connect
exit 0
else
 #тут пока ничего...
fi

5 На самом диске есть папка system в которой есть скрипт connect:
#!/bin/bash
# Конфигурация
. $0.conf
env DISPLAY=:0.0 XAUTHORITY='${XAUTHORITY-/home/alex/.Xauthority}' notify-send -t 3 "$TOKENNAME" "подключен"
# Останавливаем приложения по хорошому
killall -u $TOKENSUSER -15 $STOPAPP
# Создаём резервную копию папки
# todo
mkdir -p $BUDIR
rm -rfv $BUDIR/data_old.tar
mv $BUDIR/data.tar $BUDIR/data_old.tar
tar -vczf $BUDIR/data.tar /mnt/token-system/data
# Останавливаем приложения по плохому
killall -u $TOKENSUSER -9 $STOPAPP
# Биндим конфиги
sudo bindfs -o perms=0770,mirror=$TOKENSUSER,group=$TOKENSUSER путь1 путь2
# Запускаем стартующие программы

и файл connect.conf:
# Имя токена
TOKENNAME="alex"
# Имя пользователя
TOKENSUSER="alex"
# Папка резервного копирования
BUDIR="/home/alex/Dropbox/token/bu"
# Останавливаемые приложения
STOPAPP="opera gtg"

Должно работать примерно так:
При вставке флэшки срабатывает событие и запускается скрипт tokenscontrol, который маунтит флэху и передают управление скрипту коннекта.
Тот считывает конфигурацию, останавливает проги которым будут подменены конфиги, делает локальный бэкап флэхи, убивает те проги которые не захотели остановится и биндит каталоги с конфигами. После этого перезапустит остановленные проги.

Пользователь решил продолжить мысль 18 Октября 2010, 11:01:00:
Обработчик выдернутой флэхи и дисконнект пока не рассматриваем.
Что непонятно:
как узнать дисплей юзера если он уже залогинен? Пока в скритпе DISPLAY=:0.0 - но это не универсально
как полностью импортировать окружение для перезапускаемых прог?
« Последнее редактирование: 18 Октября 2010, 11:01:00 от dr.Faust »

Оффлайн MA3X

  • Активист
  • *
  • Сообщений: 649
    • Просмотр профиля
Re: Помогите реализовать "хотелку"
« Ответ #1 : 18 Октября 2010, 18:19:40 »
Если в запускаемые приложения юзеру  добавить скрипт, вываливающий куда_надо весь экспорт, включая дисплей? А ваш скрипт, прочитав, будет его грохать? Не пойдет?
Microsoft isn't the answer.
Microsoft is the question, and the answer is NO.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12141
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Помогите реализовать "хотелку"
« Ответ #2 : 18 Октября 2010, 20:03:01 »
как узнать дисплей юзера если он уже залогинен? Пока в скритпе DISPLAY=:0.0 - но это не универсально
Так переменая окружения пользователя DISPLAY и хранит значение текущего дисплея для пользовательской сессии.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн dr.Faust

  • Автор темы
  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: Помогите реализовать "хотелку"
« Ответ #3 : 18 Октября 2010, 22:38:35 »
Так переменая окружения пользователя DISPLAY и хранит значение текущего дисплея для пользовательской сессии.
Ну таки да - первый вопрос сводится ко второму.
Но можно воспользоваться и who.
Вобщем вопрос снят.

Если в запускаемые приложения юзеру  добавить скрипт, вываливающий куда_надо весь экспорт, включая дисплей? А ваш скрипт, прочитав, будет его грохать? Не пойдет?
В принципе - идея. Можно даже просто добавить скрипт, который будет вываливать окружение в зараннее оговоренный файл в хоуме пользователя, и умирать. А скрипт будет потом его просто подгружать.
Кривовато, но за неимением лучшего пойдёт.

Вот какие могут быть тут проблемы - получение не того дисплея - что если пользователь запустил вторую сессию х-сервера? тогда в файле окажутся переменный этой сессии, а если он её потом убил, то это будут неверные переменные. Но тут экран можно сверить с выводом who.
Хуже если по каким-то причинам файл был удалён...
Но пока бду планировать так, потому, что вторая идея - запускать висящий в памяти скрипт и ожидающий пинка от события, вместе с сессией мне нравится ещё меньше...
« Последнее редактирование: 18 Октября 2010, 22:48:17 от dr.Faust »

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: Помогите реализовать "хотелку"
« Ответ #4 : 18 Октября 2010, 22:50:19 »
А хом раздел на флэшку переписать не катит и в фстаб записать? Или я не так понял.
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Помогите реализовать "хотелку"
« Ответ #5 : 18 Октября 2010, 23:13:55 »
К чему такие выкрутасы, если у многих программ есть возможность при запуске указать рабочую папку. У firefox, pidgin, даже опера такое может. Не проще ли написать несколько скриптов и кинуть их на флешку?
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн dr.Faust

  • Автор темы
  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: Помогите реализовать "хотелку"
« Ответ #6 : 19 Октября 2010, 02:10:58 »
А хом раздел на флэшку переписать не катит и в фстаб записать? Или я не так понял.
Весь хомяк ради 5-6 программ? Не думаю что это разумно. Да и как будет работать машина в случае отсутствия флэхи? или разлогиниваться при уходе на работу? Зачем?

К чему такие выкрутасы, если у многих программ есть возможность при запуске указать рабочую папку. У firefox, pidgin, даже опера такое может. Не проще ли написать несколько скриптов и кинуть их на флешку?
Проходили. У многих но не у всех, хотя конечно можно переопределить им хомяк. Опять же - что делать если флэхи нет? Держать копии локальные и копии мобильные и всё руками перезапускать?
А что делать с тем же хамстерам? заводить 2 учётки - одна с флэхой, другая без? Гемор вобщем. Да и решать проблемы для каждой отдельной проги напряжно когда можно сделать системное решение.

Оффлайн dr.Faust

  • Автор темы
  • Активист
  • *
  • Сообщений: 435
    • Просмотр профиля
Re: Помогите реализовать "хотелку"
« Ответ #7 : 21 Октября 2010, 03:12:19 »
Хорошо, а если подойти к вопросу более радикально - как разлогинить пользователя?
Ну, кроме killall -u user -s 15 -g

 

Страница сгенерирована за 0.018 секунд. Запросов: 20.