Wie greift man vom Terminal aus auf ein USB-Flash-Laufwerk zu?

Neben dem Standard-Befehl mount (der root voraussetzt) können Sie Laufwerke mit udisks und dbus mit Ihrem Standard-Benutzer einbinden.

Um dies zu tun, ist es sinnvoll (aber nicht erforderlich), zunächst ein paar Dinge über das Laufwerk zu wissen:

  1. Was für ein Gerät es ist (d.d. h. /dev/sdb1)
  2. Welches Dateisystem es verwendet.

Mit diesen Kenntnissen können Sie ein Laufwerk mit einem einfachen Befehl von der Kommandozeile aus einbinden.

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemMount "<filesystem>" 

Dieser Aufruf sollte bei erfolgreichem Einbinden den Pfad ausgeben, unter dem es eingebunden ist.

Um auf diese Weise gemountete Laufwerke wieder zu trennen, können Sie Folgendes ausführen:

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/<device> --method org.freedesktop.UDisks.Device.FilesystemUnmount 

N.B. das <device> ist einfach das Ende des Pfades dazu. Wenn das, was Sie mounten wollen, zum Beispiel unter /dev/sdb2 liegt, dann würden Sie sdb2 anstelle von <device> einfügen.

Wenn Sie nicht wissen, um welches Gerät es sich handelt oder welches Dateisystem es verwendet, keine Sorge. Sie können all diese Informationen ganz einfach mit diesem kleinen Befehl ausgeben:

gdbus introspect --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices --recurse --only-properties | grep -E "(readonly .+ (IdLabel|IdType|Device(IsMounted|IsDrive|File) ).*|\}|.*\{)"

Dieser gibt etwa Folgendes aus:

node /org/freedesktop/UDisks/devices { node /org/freedesktop/UDisks/devices/sda { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda'; }; }; node /org/freedesktop/UDisks/devices/sda1 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = 'SYSTEM'; readonly s IdType = 'ntfs'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda1'; }; }; node /org/freedesktop/UDisks/devices/sda2 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = 'Windows7'; readonly s IdType = 'ntfs'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = true; readonly s DeviceFile = '/dev/sda2'; }; }; node /org/freedesktop/UDisks/devices/sda3 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = 'Recovery'; readonly s IdType = 'ntfs'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda3'; }; }; node /org/freedesktop/UDisks/devices/sda4 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda4'; }; }; node /org/freedesktop/UDisks/devices/sda5 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = 'ext4'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = true; readonly s DeviceFile = '/dev/sda5'; }; }; node /org/freedesktop/UDisks/devices/sda6 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = 'swap'; readonly s IdUsage = 'other'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sda6'; }; }; node /org/freedesktop/UDisks/devices/sda7 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = 'ext4'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = true; readonly s DeviceFile = '/dev/sda7'; }; }; node /org/freedesktop/UDisks/devices/sdb { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sdb'; }; }; node /org/freedesktop/UDisks/devices/sdb1 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = 'USB DRIVE'; readonly s IdType = 'vfat'; readonly s IdUsage = 'filesystem'; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sdb1'; }; }; node /org/freedesktop/UDisks/devices/sr0 { interface org.freedesktop.UDisks.Device { readonly s IdLabel = ''; readonly s IdType = ''; readonly s IdUsage = ''; readonly b DeviceIsMounted = false; readonly s DeviceFile = '/dev/sr0'; }; };};

Die Geräte, die IdUsage = 'filesystem' haben, können mit dem obigen Befehl eingehängt werden.

Das heißt, wenn ich zum Beispiel das Gerät ‚USB DRIVE‘ mounten möchte, würde ich den Befehl

gdbus call --system --dest org.freedesktop.UDisks --object-path /org/freedesktop/UDisks/devices/sdb1 --method org.freedesktop.UDisks.Device.FilesystemMount "vfat" 

Diese Befehle arbeiten alle mit dem dbus Nachrichtensystem, genauso wie Nautilus und andere Dateimanager Dinge automatisch einhängen. In diesen Befehlen senden wir verschiedenen Objekten (d.h. /org/freedesktop/... Nachrichten mit der Bitte, bestimmte Geräte ein- und auszuhängen. Je nach den Berechtigungen, die man in PolicyKit erhalten hat, können sie das tun oder auch nicht.

Mit ähnlichen Befehlen kann man fast jeden Aspekt seiner Erfahrung in Ubuntu steuern und die meisten Systemprogramme und -funktionen simulieren (z. B. Herunterfahren, Lautstärkeänderung usw.).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.