Как я могу автоматически создать ссылку на рабочий стол или в $HOME, когда Карта с интерфейсом USB смонтирована?

Как я могу создать (и удалить, если отключено), символьная ссылка на точку монтирования недавно включенного - в USB-устройстве на рабочем столе или в $HOME системной гостевой учетной записи?

0
задан 22 February 2016 в 16:03

1 ответ

Ваш вопрос, оказывается, существует двух отдельных вопросов:

  1. Как автоматически создать (и удалить), ссылка на рабочий стол к смонтированным картам памяти
  2. Как выполнить его на гостевой учетной записи

В этих вопросах отвечают [1.] и [2.] ниже.

1. Автоматически создайте настольную ссылку на смонтированные карты памяти (в целом)

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

enter image description hereenter image description here

Процедура; как это работает

Сценарий ниже является отредактированной версией этого. Эта версия:

  • следит за недавно смонтированными устройствами (использующий команду lsblk)
  • если новый объект обнаруживается, он проверяет, является ли недавно смонтированное устройство a usb устройство командой: find /dev/disk -ls | grep <disk>. Если usb в выводе новое монтирование допустимо.
  • если монтирование допустимо, ссылка создается на рабочем столе пользователя с командой: ln -s <new_mount> <target>.
    Целенаправленную ссылку называют: [USB] <devicename>.

В то же время

  • Новое монтирование добавляется к списку. периодически (однажды в четыре секунды), список проверяется. Если монтирование больше не существует, его соответствующая ссылка удалена из Вашего рабочего стола.

Как настроить

  1. Скопируйте сценарий ниже в пустой файл, сохраните его как show_usb.py
  2. создайте каталог /opt/show_usb (так как мы хотим выполнить его для гостевой учетной записи):

    sudo mkdir /opt/show_usb
    
  3. Скопируйте сценарий в /opt/show_usb:

    sudo cp /path/to/show_usb.py /opt/show_usb
    
  4. Тестовый прогон сценарий от терминала командой:

    python3 /opt/show_usb/show_usb.py
    
  5. Если все хорошо работает, добавьте его для Запущения Приложений: Тире> Приложения Запуска> Добавляет. Добавьте команду:

    python3 /opt/show_usb/show_usb.py
    

Сценарий

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

def find_dtop():
    # get the localized path to the Desktop folder
    home = os.environ["HOME"]; dr_file = home+"/.config/user-dirs.dirs"
    return [home+"/"+ l.split("/")[-1].strip() \
            for l in open(dr_file).readlines() \
            if l.startswith("XDG_DESKTOP_DIR=")][0].replace('"', "")

def get_mountedlist():
    return [(item.split()[0].replace("├─", "").replace("└─", ""),
             item[item.find("/"):]) for item in subprocess.check_output(
            ["lsblk"]).decode("utf-8").split("\n") if "/" in item]

def identify(disk):
    cmd = "find /dev/disk -ls | grep /"+disk
    output = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
    return True if "usb" in output else False

done = []; check = []
dt = find_dtop()
while True:
    mnt = get_mountedlist(); mount_check = [item[1] for item in mnt]
    for item in check:
        if not item in mount_check:
            try:
                os.remove(dt+"/[USB] "+item.split("/")[-1]); check.remove(item)
            except FileNotFoundError:
                pass
    new_paths = [dev for dev in mnt if not dev in done and not dev[1] == "/"]
    valid = [dev for dev in new_paths if identify(dev[0]) == True]
    for item in valid:
        new = item[1]
        subprocess.Popen(["ln", "-s", new, dt+"/[USB] "+new.split("/")[-1] ])
        check.append(new)
    time.sleep(4)
    done = mnt




2. Как автоматически запустить скрипт, конкретно в гостевой учетной записи

Заставить сценарий автоматически запустить на гостевой сессии:

  1. Посмотрите если каталог /etc/guest-session/skel/.config/autostart существует. В противном случае создайте его:

    sudo mkdir -p /etc/guest-session/skel/.config/autostart
    
  2. Теперь создайте средство запуска запуска для гостевой учетной записи:

    sudo -i gedit /etc/guest-session/skel/.config/autostart/desktop_usb.desktop
    

    В файле, который открывается, вставьте код ниже:

    [Desktop Entry]
    Name=USB_desktop
    Exec=python3 /opt/show_usb/show_usb.py
    Type=Application
    

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

Именно

Примечания

  • Больше о том, как отредактировать гостевую учетную запись, которая будет найдена здесь.
  • Сценарий только действует, если новый диск смонтирован и не добавляет значимой загрузки в процессор вообще.
1
ответ дан 24 July 2019 в 10:43

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

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