Подтягиваем IP адрес для Unison по локальному хосту

Да. Название конечно так себе :)
Объясню проще:
есть прекрасная утилита — Unison. Она синхронизирует данные между двумя компами (или тремя, и так далее).

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

root = /home/ozim/Домашнее фото видео/
root = socket://192.168.2.249:4896//home/lara/Домашнее фото и видео/
batch = true
auto = true
#ignore = Path {}
perms = 0
rsrc = false

как мы видим, нам нужно знать IP адрес локального хоста, с которым происходит синхронизация. Проблема в том, что при сбросе настроек роутера, прописанные вручную IP для всех компов слетают, что делает проблемным использование Unison. Приходится каждый раз прописывать IP заново.
Но, немного терпения, мой друг. Немного гугла и усидчивости, и я сваял скриптик на баше, который делает за нас всю работу
Собственно, этот скрипт я запускаю для синхронизации (он написан для KDE 5 — именно та часть, которая делает уведомление), в него я вписал код, который вычисляет IP компа для синхронизации и пишет конфиг файл с ним.

#!/bin/sh
###этот кусок добавлен для вычисления IP
ping_results=$(ping -c 1 lara-msi.local | perl -e '$header=<>;$header=~m/ \(([^)]+)\) /;print $1;');

FILE="/home/ozim/.unison/123.prf"
#тут пишем в файл новый конфиг с полученным IP
/bin/cat <$FILE
root = /home/ozim/Домашнее фото видео/
root = socket://$ping_results:4896//home/lara/Домашнее фото и видео/
batch = true
auto = true
#ignore = Path {}
perms = 0
rsrc = false
EOM
#дальше работаем по старому :)

pid=`pidof plasmashell`
sess=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
export DBUS_SESSION_BUS_ADDRESS=$sess
if unison 123 -ui text; then /usr/bin/notify-send "Синхронизация" "прошла успешно" -i /usr/share/pixmaps/kubuntu-logo.png -t 5000;
else /usr/bin/notify-send "Синхронизация" "НЕУСПЕШНА" -i /usr/share/pixmaps/kubuntu-logo.png -t 5000;
fi

профит!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *