Предотвратите внешние устройства, заблокированные к средству запуска

Если я подключу внешнее устройство (такое как карта с интерфейсом USB или смартфон на базе Android), то он автоматически откроется в наутилусе и блокировать соответствующий значок к средству запуска единицы. Там какой-либо путь состоит в том, чтобы предотвратить это?

Я использую Ubuntu 14.04

5
задан 19 January 2016 в 04:32

1 ответ

При разблокировании устройства от Средства запуска Unity оно как на самом деле поместило в черный список от средства запуска. Вы видите, какие устройства в настоящее время помещаются в черный список командой:

gsettings get com.canonical.Unity.Devices blacklist

сценарий ниже является альтернативным способом установить Ваше собственное помещенные в черный список устройства . Различие - то, что сценарий делает это постоянным способом, непока Вы не удаляете файл ~/.blacklist_data. (см. объяснение: , Как это работает )

фоновый сценарий

Даже для фонового сценария, этот чрезвычайно легкий вес, в результате того, что, если ничто не изменяется на черный список, только текущий черный список читается эти gsettings команда. Это читает dconf база данных, которая находится в binary формат и таким образом очень легкий вес.

сценарий

#!/usr/bin/env python3
import subprocess
import os
import time

blacklist_data = os.environ["HOME"]+"/.blacklist_data"

def get_setlist():
    cmd = "gsettings get com.canonical.Unity.Devices blacklist"
    blacklist = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").strip()
    return "[]" if blacklist == "@as []" else blacklist

try:
    blacklist1 = str(open(blacklist_data).read()).strip()
    cmd = 'gsettings set com.canonical.Unity.Devices blacklist "'+blacklist1+'"'
    subprocess.call(["/bin/bash", "-c", cmd])
except FileNotFoundError:
    blacklist1 = "[]"
    open(blacklist_data, "wt").write(blacklist1)

while True:
    time.sleep(1)
    blacklist2 = get_setlist()
    if blacklist2 != blacklist1:
        oldlist = open(blacklist_data).read().strip()
        n_old = len(eval(oldlist))
        try:
            n_new = len(eval(blacklist2))
        except SyntaxError:
            n_new = 0
        if n_old < n_new:
            open(blacklist_data, "wt").write(blacklist2)
        else:
            cmd = 'gsettings set com.canonical.Unity.Devices blacklist "'+oldlist+'"'
            subprocess.call(["/bin/bash", "-c", cmd])
    blacklist1 = blacklist2

, Как использовать

  1. Копия сценарий в пустой файл, сохраняет его как myown_blacklist.py
  2. Тестовый прогон он командой:

    python3 /pat/to/myown_blacklist.py`
    

    Теперь разблокировали Ваш (любой, это работает не только USB-устройства), нежелательные устройства. Разблокирование только необходимо однажды.

  3. , Если все хорошо работает, добавьте его для Запущения Приложений: выберите Dash> Startup Applications> Add. Добавьте команду:

    python3 /pat/to/myown_blacklist.py`
    

, Как это работает

, проблема - то, что Unity "забывает" устройства, после того как они размонтированы. Сценарий затем отслеживает то, что происходит с выводом:

gsettings get com.canonical.Unity.Devices blacklist

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

5
ответ дан 23 November 2019 в 09:22

Другие вопросы по тегам:

Похожие вопросы: