Автоматическое создание бэкапа данных при подключении к домашней сети

()

У многих пользователей работающих за ноутбуком есть скрипт, который позволяет создать копию всех данных на определённый сервер в домашней сети (или локальной сети на работе). Одна из проблем с таким скриптом заключается в том что его надо запускать вручную. Можно конечно запускать его по cron'у, но нет гарантии что в момент запуска пользователь будет дома/в офисе, а не в командировке или во сне:)

Задачу можно решить организовав автоматический запуск скрипта при подключении к домашней WiFi-сети. Если в качестве менеджера сети используется wicd то проблем не возникнет, так как в нём есть простая возможность настроить выполнение скриптов при подключении. В случае с NetworkManager'ом всё несколько сложнее, но тоже решаемо. Именно этот случай мы и рассмотрим дальше.

Уточним начальные условия:

  • ноутбук под управлением kubuntu 12.10;
  • за ноутбуком работает единственный пользователь с логином "moose";
  • скрипт создания резервной копии "/home/moose/scripts/backups_note.sh";
  • домашней является WiFi-сеть с SSID "home of moose", сохранённая в NetworkManager как соединение с именем "home-of-moose";

Немного теории: NetworkManager конечно не позволяет запускать скрипты при подключении так удобно как это делает wicd, он всё-таки запускает скрипты из директорий "/etc/network/if-up.d" и "/etc/network/if-post-down.d", совместимым с ifup и ifdown способом.

Таким образом задачу можно решить написанием дополнительного скрипта "/etc/network/if-up.d/99_backup_user_data.sh". Сразу приведём его листинг с комментариями:

#!/bin/sh

# Скрипт работает только для NetworkManager
if [ "${METHOD}" != "NetworkManager" ]; then
        exit
fi

# Имя соединения должно быть написано именно так, как задано в настройках!
# Если имя не совпадает значит ничего делать не надо
if [ "${CONNECTION_ID}" != "home-of-moose" ]; then
        exit
fi

# Если выполнены все необходимые условия то делаем бэкап
# ВАЖНО! Поскольку этот скрипт запускается с правами суперпользователя,
# Обязательно нужно выполнять пользовательский скрипт с ограниченными правами.
# Таким образом ошибка в скрипте не порушит всю систему.
su -c '/home/moose/scripts/backups_note.sh' moose

Теперь при подключении к домашней сети автоматически будет запускаться скрипт создания резервной копии. Рекомендуется на всякий случать дополнить скрипт логированием и периодически просматривать логи.

На этом всё. Приятной работы!

Ключевые слова: wicd, networkmanager, backup, бэкап.

Комментарии:

Ladm 2012-12-23 23:42:04 (#)

Спасибо за статью, надо отцу на ноуте такое настроить)

MooSE 2012-12-24 22:37:56 (#)

Цитата:

Спасибо за статью, надо отцу на ноуте такое настроить)


На самом деле я давно хотел такое замутить, но в GUI способа не было, а пару месяцев назад залез в дебри и нашёл вот такой вот путь. Мне он на самом деле не нравится, но ИМХО лучше чем вообще ничего:)

ИМХО куда правильнее было бы если бы NM запускал скрипты сразу с правами пользователя-инициатора соединения.

greenlogles 2013-03-01 13:32:44 (#)

Интересное решение.
Надо будет и у себя настроить аналогчино. А то всегда забываю запускать.

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

MooSE 2013-03-02 03:50:22 (#)

Цитата:

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


Не заморачивался. Но вообще можно заморочится правилами udev, которые будут запускать скрипт при подключении конкретного внешнего диска.
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE