2

Как добиться автоматического входа и выхода из учетных записей Google на основе времени. Я пользуюсь клиентом чата EMPATHY

1 ответ1

6

Для начала вам понадобится способ планировать задачи. Если вы не знакомы с cron и используете Ubuntu/GNOME, тогда sudo apt-get install gnome-schedule . Затем вы можете открыть « Запланированные задачи» из меню «Система» >> «Настройки» и использовать графический интерфейс, чтобы установить конкретное время для выполнения команды.

Самый простой способ запланировать время подключения и отключения Empathy - это просто запланировать задания для запуска и остановки программы (просто используйте команды empathy и killall empathy). Проблема в том, что если мы убьём Empathy без выхода из системы, вы по-прежнему будете оставаться в системе в течение нескольких минут, пока Google не обнаружит, что у вас истекло время ожидания.

Чтобы обойти эту проблему, мы можем использовать D-Bus для отправки сигнала на сервер Empathy, который просит его отключиться. Есть много способов сделать это, в том числе с помощью dbus-send из командной строки, но, поскольку я больше знаком с Python, я использовал это.

Вместо того чтобы настраивать задачу выхода для вызова killall empathy , сохраните где-нибудь следующий скрипт (например, ~/empathy_signout.py) и затем запланируйте свою задачу для его вызова (python ~/empathy_signout.py). Перед сохранением файла замените строку EXAMPLE в четвертой строке именем вашей учетной записи Google Talk.

#!/usr/bin/env python
# Disconnect Empathy from Google Talk and kill the program.

# Replace EXAMPLE below with your account name (whatever is before @gmail.com)
google_acct_name = 'EXAMPLE'

import os
try:
    import dbus
except ImportError:
   exit('You need the Python dbus bindings,'
        ' type "sudo apt-get install python-dbus".')

wkname = ('org.freedesktop.Telepathy.Connection.gabble.jabber.' + 
          google_acct_name + '_40gmail_2ecom_2fTelepathy')
pathname = '/' + wkname.replace('.', '/')

bus = dbus.SessionBus()
conn_obj = bus.get_object(wkname, pathname)
conn_obj.Disconnect(dbus_interface='org.freedesktop.Telepathy.Connection')

os.system('killall empathy')

Этот сценарий можно настроить, чтобы избежать ошибочного предположения о компоненте пути к имени учетной записи или также войти в систему (если выход из программы является проблемой). Взгляните на интерфейс ConnectionManager в документации по Telepathy D-Bus, если это вас не пугает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .