脚本

脚本

我已成功设置 Owncloud 服务器的默认日历和默认联系人列表的同步,基于这个 askubuntu 线程。不过,我的 Owncloud 服务器上有多个日历和联系人列表。我检查了日历和联系人应用程序,以了解添加新联系人列表和日历的方法。联系人应用程序似乎不提供此功能。日历应用程序有一个添加新日历的选项,但当我按下相应的按钮时,我会被转发到系统设置页面。提前感谢您的提示!M。

(我的设备是 BQ Aquaris E4.5,搭载 Ubuntu 14.10-r21)

答案1

我可以根据 alexandre_payet 的回答分享这个脚本,它将从您自己的云服务器添加 1 个联系人地址簿和 1 个日历,以便与您的手机同步。

脚本

#!/bin/bash
# ---------------------------------------------------------------------------
# Ubuntu Phone - Sync Owncloud Contacts & Calendar Account
# Carddav & Caldav.

# Tested on : Ubuntu-touch vivid - ubuntu-touch/rc-proposed/bq-aquaris.en/vegetahd/
# Last edit : 2015/08/23.
# Author : Romain Fluttaz, boTux.fr, <[email protected]>

# ============= [ Configuration ] ============= #

# --------------- [ OwnCloud ] ---------------- #

# Server and user informations
HTTP_PROTOCOL="https"               # "http" or "https". It's recommended to use an $HTTP_PROTOCOL connection
OWNCLOUD_URL="cloud.domain.com"         # Without the last /.
USERNAME="owncloud-user"            # Your OwnCloud username
PASSWORD="owncloud-password"            # Your OwnCloud password

# Contact addressbooks
CONTACT_ADDRESSBOOK_NAME="contacts"     # Check in the contact setting page.

# Calendar
CALENDAR_NAME="personnel"           # Check in the calendar setting page.

# Database
OC_DATABASE_NAME="owncloud"

# ----------------- [ Phone ] ----------------- #

# Database name :
CONTACT_DB_NAME="Contacts-name"         # Contact addressbook name on the phone
CALENDAR_DB_NAME="Calendar-name"        # Calendar name on the phone

# CRON job
CRON_FREQUENCY="hourly"             # Cronjob frequency. "hourly", "dayly", "weekly", "monthly". See $HTTP_PROTOCOL://help.ubuntu.com/community/CronHowto#Advanced_Crontab

# ============= [ /Configuration ] ============ #

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License at <http://www.gnu.org/licenses/> for
# more details.

# Thanks to : 
# alexandre_payet @ https://askubuntu.com/questions/616081/ubuntu-touch-add-contact-list-and-calendars
# alexandre_payet @ https://askubuntu.com/questions/611761/syncevolution-in-cronjob-to-sync-the-ubuntu-phone-via-caldav-arddav
# alexandre_payet @ https://askubuntu.com/questions/629219/automatically-sync-calendar-on-ubuntu-phone/629728#629728

# Usage: Edit the config section and run the script.

# Revision history:
# 2015-08-22 Adding 1 Contact & 1 Calendar.
# 2015-08-22 Add cronjob support.
# ---------------------------------------------------------------------------

echo "\e[4mAdding OwnCloud account : **$OWNCLOUD_URL**\e[0m"
echo ""

# Contact
echo -e "[\e[0;34m Contacts \e[m] $CONTACT_ADDRESSBOOK_NAME @ $OC_DATABASE_NAME"
syncevolution --create-database backend=evolution-contacts database=$CONTACT_DB_NAME
syncevolution --configure --template webdav username=$USERNAME password=$PASSWORD syncURL=$HTTP_PROTOCOL://$OWNCLOUD_URL/remote.php/ keyring=no target-config@$OC_DATABASE_NAME
syncevolution --configure backend=evolution-contacts database=$CONTACT_DB_NAME @default $CONTACT_DB_NAME
syncevolution --configure database=$HTTP_PROTOCOL://$OWNCLOUD_URL/remote.php/carddav/addressbooks/$USERNAME/$CONTACT_ADDRESSBOOK_NAME backend=carddav target-config@$OC_DATABASE_NAME $CONTACT_DB_NAME
syncevolution --configure --template SyncEvolution_Client Sync=None syncURL=local://@$OC_DATABASE_NAME username= password= $OC_DATABASE_NAME $CONTACT_DB_NAME
syncevolution --configure sync=two-way backend=evolution-contacts database=$CONTACT_DB_NAME $OC_DATABASE_NAME $CONTACT_DB_NAME
echo "             +--> $CONTACT_DB_NAME @ local"
syncevolution --sync refresh-from-remote $OC_DATABASE_NAME $CONTACT_DB_NAME
syncevolution --sync slow $OC_DATABASE_NAME $CONTACT_DB_NAME
echo -e "[\e[0;34m Contacts \e[m] +--> Done."
echo ""

# Calendar
echo -e "[\e[33m Calendar \e[m] $CALENDAR_NAME @ $OC_DATABASE_NAME"
syncevolution --create-database backend=evolution-calendar database=$CALENDAR_NAME
syncevolution --configure --template webdav username=$USERNAME password=$PASSWORD syncURL=$HTTP_PROTOCOL://$OWNCLOUD_URL/remote.php/ keyring=no target-config@$OC_DATABASE_NAME
syncevolution --configure backend=evolution-calendar database=$CALENDAR_NAME @default $CALENDAR_NAME
syncevolution --configure database=$HTTP_PROTOCOL://$OWNCLOUD_URL/remote.php/caldav/calendars/$USERNAME/$CALENDAR_DB_NAME backend=caldav target-config@$OC_DATABASE_NAME $CALENDAR_NAME
syncevolution --configure --template SyncEvolution_Client syncURL=local://@$OC_DATABASE_NAME username= password= $OC_DATABASE_NAME $CALENDAR_NAME
syncevolution --configure sync=two-way database=$CALENDAR_NAME $OC_DATABASE_NAME $CALENDAR_NAME
echo "             +--> $CALENDAR_DB_NAME @ local"
syncevolution --sync refresh-from-remote $OC_DATABASE_NAME $CALENDAR_NAME
echo -e "[\e[33m Calendar \e[m] +--> Done."
echo ""

# Cron
echo -e "[\e[0;36m Cron \e[m]"
echo -e "         +--> \e[0;31mGranting SuperUser Access\e[m"
sudo mount /dev/loop0 / -o remount,rw
CRON_LINE="@$CRON_FREQUENCY export DISPLAY=:0.0 && export DBUS_SESSION_BUS_ADDRESS=$(ps -u phablet e | grep -Eo 'dbus-daemon.*address=unix:abstract=/tmp/dbus-[A-Za-z0-9]{10}' | tail -c35) && /usr/bin/syncevolution $OC_DATABASE_NAME"
(crontab -u phablet -l; echo "$CRON_LINE" ) | crontab -u phablet -
sudo service cron restart
crontab -l | grep "$CRON_LINE"
echo -e "[\e[0;36m Cron \e[m] +--> Added."
echo ""

# First Normal Sync
echo -e "[\e[0;32m Syncronisation \e[m]"
syncevolution $OC_DATABASE_NAME
echo -e "[\e[0;32m Syncronisation \e[m] +--> Done."

# Print information
echo ""
echo ""
echo ""
echo "# To manually sync your accounts, use the command below :"
echo ""
echo -e "                           syncevolution $OC_DATABASE_NAME \e[m"
echo "                                          or"
echo -e "\e[0;34msyncevolution $OC_DATABASE_NAME $CONTACT_DB_NAME\e[m | \e[33msyncevolution $OC_DATABASE_NAME $CALENDAR_NAME\e[m"
echo ""
echo "See 'syncevolution --help' to get more information."

下载 ubuntu-touch_owncloud-sync_contact-calendar.sh|Github要点

测试于ubuntu-touch/rc-proposed/bq-aquaris.en/vegetahd渠道

如何使用

编辑配置部分,并在你的ubuntu-phone上执行。

从 Ubuntu 桌面

(使用:从 ppa 安装的 phablet-tools)

  1. 添加平板手机外壳
    sudo add-apt-repository ppa:phablet-team/tools
    sudo apt-get 更新
    sudo apt-get 安装平板手机工具
  2. 激活开发者模式
  3. 下载并编辑脚本:
    获得https://gist.githubusercontent.com/boTux/069b53d8e06bdb9b9c97/raw/a03be09136c5275b2956c512accdad69b30e8074/ubuntu-touch_owncloud-sync_contact-calendar.sh
    gedit ubuntu-touch_owncloud-sync_contact-calendar.sh
    • 在里面[配置]/[OwnCloud]部分
      • 输入您的OWNCLOUD_URL,没有最后一个 /。
      • 输入您的用户名&密码
      • 输入您自己的云地址簿和日历的名称。
    • 在里面[配置]/[电话]部分
      • 编辑CONTACT_DB_NAME&日历数据库名称使用您选择的名称。
      • 编辑CRON_FREQUENCY到您需要的同步间隔。
    • 节省
  4. 通过 USB 连接你的手机并复制脚本(通过 nautilus,例如在 Documents/ 中)
  5. 通过 phablet-shell 连接并运行脚本:
    平板手机外壳
    chmod +x 文档/ubuntu-touch_owncloud-sync_contact-calendar.sh
    ./文档/ubuntu-touch_owncloud-sync_contact-calendar.sh

我希望这可以对你们中的一些人有所帮助......

答案2

要添加并同步日历和联系人与 owncloud,您可以在终端中使用命令行。

我在https://lists.launchpad.net/ubuntu-phone/msg09789.html

注意:一个好方法是使用 ssh 连接到 ubuntu 手机的桌面终端(然后您可以轻松复制命令行)。但它也应该在手机的终端应用程序中工作

日历

创建日历

syncevolution --create-database backend=evolution-calendar database=Calendar1

创建对等点

syncevolution --configure --template webdav username=myusername password=mypassword syncURL=https://url-to-owncloud-install/remote.php/caldav/calendars/user-name/defaultcalendar keyring=no target-config@owncloud

创建新源

syncevolution --configure backend=evolution-calendar database=Calendar1 @default Calendar1

添加远程数据库

syncevolution --configure database=https://url-to-owncloud-install/remote.php/caldav/calendars/user-name/defaultcalendar backend=caldav target-config@owncloud Calendar1

将远程日历与本地数据库连接起来

syncevolution --configure --template SyncEvolution_Client syncURL=local://@owncloud username= password= owncloud Calendar1

将本地数据库添加到源

syncevolution --configure sync=two-way database=Calendar1 owncloud Calendar1

开始首次同步

syncevolution --sync refresh-from-remote owncloud Calendar1

您可以对日历 1 执行此操作,然后对日历 2 执行此操作,...

在这些命令行中,不要忘记替换:

对于命令 N°2

'myusername' by your owncloud username
'mypassword' by your owncloud password
'https://url-to-owncloud-install/remote.php/caldav/calendars/user-name/defaultcalendar' by the adress link of calendar1 or calendar2 , ....

对于命令 N°4

'https://url-to-owncloud-install/remote.php/caldav/calendars/user-name/defaultcalendar' by the adress link of calendar1 or calendar2 , ....

接触 :

一样的方法 :

syncevolution --create-database backend=evolution-contacts database=Contact1

syncevolution --configure --template webdav username=myusername password=mypassword syncURL=Your_contact1_owcloud_adress keyring=no target-config@owncloud

syncevolution --configure backend=evolution-contacts database=Contact1 @default Contact1

syncevolution --configure database=Your_contact1_owcloud_adress backend=carddav target-config@owncloud Contact1

syncevolution --configure --template SyncEvolution_Client Sync=None syncURL=local://@owncloud username= password= owncloud Contact1

syncevolution --configure sync=two-way backend=evolution-contacts database=Contact1 owncloud Contact1

syncevolution --sync refresh-from-remote owncloud Contact1

与日历相同的备注。我只用一个联系人数据库测试过,但它应该适用于 Contact2、Contact3……

对于联系人,请确保使用“backend=evolution-contacts”和“backend=carddav”(日历和联系人命令行之间的差异)

重要的 : 对于下一次同步,您只需执行以下操作:

syncevolution owncloud calendar1
syncevolution owncloud contact1

和日历2,联系人2,...

要自动同步联系人和日历,您可以使用 crontab 作业在需要时启动这些命令。您可以查看此帖子:cronjob 中的 Syncevolution 通过 caldav/arddav 同步 ubuntu 手机

希望我的命令行没有错误。

相关内容