Skip to content

Instantly share code, notes, and snippets.

@themaximax
Last active August 30, 2022 13:07
Show Gist options
  • Save themaximax/36dbaed9c2b07e1d89f4cc08f82b063d to your computer and use it in GitHub Desktop.
Save themaximax/36dbaed9c2b07e1d89f4cc08f82b063d to your computer and use it in GitHub Desktop.
Скрипт синхронизации AnyDesk. Получается своего рода адресная книга для бесплатной версии.
#!/bin/bash
userconf="$HOME/.anydesk/user.conf"
# Указываем файл в "облаке", если его нет, он будет создан автоматически
cloud="$HOME/MEGAsync/anydesk.txt"
if ! [ -f "$userconf" ]; then
echo -e "Ошибка: Файл $userconf не найден!\n\tСкорее всего не установлен AnyDesk" >&2
exit 1
fi
echo "$userconf"
echo "Получаю дату изменения конфига AnyDesk... "
# Дату получаем в секундах, чтобы потом сравнивать. В эхо уже конвертируем обратно в человеческий вид
date_local=$(date -r "$userconf" +%s) && echo "- $(date -d @$date_local)"
echo "Считываю список ID... "
id_local=$(grep 'ad.roster.items' "$userconf")
if [[ $? -ne 0 || "$id_local" == "ad.roster.items=" ]]; then
echo "- ID не найдены!"
date_local=0
else
echo "- ОК"
fi
echo "$cloud"
echo "Получаю дату последней синхронизации... "
if [[ -f "$cloud" ]]; then
date_cloud=$(date -r "$cloud" +%s) && echo "- $(date -d @$date_cloud)"
echo "Считываю список ID... "
if id_cloud=$(grep 'ad.roster.items' "$cloud"); then
echo "- ОК"
else
echo "- ID не найдены!"
date_cloud=0
fi
else
echo "- Синхронизация не производилась"
date_cloud=0
fi
#echo "date_local=$date_local" "date_cloud=$date_cloud"
if [[ $date_cloud -eq $date_local || "$id_cloud" == "$id_local" ]]; then
echo "=== Синхронизация не требуется! ==="
exit 0
fi
echo -n "=== Синхронизация: "
if [[ $date_cloud -lt $date_local ]]; then
echo "Конфиг -> Облако"
echo "Делаю резервную копию... "
cp -f "$cloud" "${cloud}.bak" && echo "- ОК"
echo "Обновляю $cloud..."
echo "$id_local" > "$cloud" && echo "- ОК"
else
echo "Облако -> Конфиг"
echo "Делаю резервную копию... "
cp -f "$userconf" "${userconf}.bak" && echo "- ОК"
# меняем в локальном файле старую строку на новую через sed
echo "Обновляю $userconf..."
sed -i "s/$id_local/$id_cloud/g" "$userconf" && echo "- ОК"
fi
echo "=== Синхронизация успешно завершена! ==="
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment