GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso verificare se un volume è montato dove dovrebbe utilizzare Python?

Soluzione 1:

Darei un'occhiata a os.path.ismount() .

Soluzione 2:

Per una risposta definitiva a qualcosa che solo il kernel sa per certo, chiedi al kernel:

cat /proc/mounts

Quel file può essere letto / analizzato come se fosse un file normale, utilizzando qualsiasi strumento ti piaccia. Compreso Python. Esempio veloce e sporco:

#!/usr/bin/python

d = {}

for l in file('/proc/mounts'):
    if l[0] == '/':
        l = l.split()
        d[l[0]] = l[1]

import pprint

pprint.pprint(d)

Soluzione 3:

Il modo più semplice per controllare è invocare mount tramite subprocess e vedere se si presenta lì. Per credito extra, usa os.readlink() sui contenuti di /dev/disk/by-* per capire di quale dispositivo si tratta.

Soluzione 4:

Risposta bonus. Se il dispositivo esterno non è montato, i dati vengono scritti nella partizione root nel percorso /external-backup . Se il dispositivo esterno è montato, i dati sulla partizione root sono ancora presenti ma non sono raggiungibili perché /external-backup ora punta a un dispositivo esterno.

Soluzione 5:

Vecchia domanda, ma ho pensato di contribuire comunque con la mia soluzione (basata sulla risposta di Dennis Williamson e Ignacio Vazquez-Abrams). Dal momento che lo sto usando su un ambiente non Linux per controllare le directory remote montate, /proc e mtab non può essere utilizzato e non sono stati implementati ulteriori controlli:

def is_mounted(special, directory):
    search_prefix = '{} on {}'.format(special, directory.rstrip('/'))

    if os.path.ismount(directory):
        mounts = subprocess.check_output(['mount']).split('\n')

        for line in mounts:
            if line[:len(search_prefix)] == search_prefix:
                return True;

    return False

Miglioramenti benvenuti!


Linux
  1. Come testare quale shell sto usando in un terminale?

  2. Come verificare se è montata una directory particolare?

  3. Come verificare se una partizione è montata come "noexec"?

  4. Come verificare se Bash può stampare i colori?

  5. Come verificare se SELinux è abilitato o disabilitato

Come controllare la versione di Python in Linux, Mac e Windows

Come controllare la versione di Python

Come creare un bucket S3 utilizzando Python Boto3 su AWS

Come gestire i pacchetti Python utilizzando PIP

Come ridimensionare le immagini usando Python

Come posso verificare se sto usando KDE o Gnome?