Montieren Sie überall und erzählen Sie mir davon

423
Bowi

Ich möchte ein Skript schreiben, das Folgendes bewirkt:

  • Ein Gerät einbauen (immer dasselbe)
  • Werfen Sie einen Blick auf eine Datei am Gerät und erzählen Sie mir etwas darüber
  • Trennen Sie das Gerät erneut.

Das ist ziemlich einfach, aber ich habe Angst vor dem Montagepunkt: Was ist, wenn jemand (ich?) An diesem Punkt bereits etwas montiert hat oder Dateien darauf abgelegt hat?

Ist es möglich, dem Skript etwas wie den folgenden Pseudo-Code mitzuteilen:

$whereToGo = mount /dev/device --justMountItSomewhereWhereItIsPossibleAndTellMeWhereThatIs // Do something with $whereToGo/myFile umount $whereToGo 
0
Versuchen Sie, einen neuen Ordner zu erstellen. Möglicherweise handelt es sich um einen zufälligen Ordner, und versuchen Sie, auf diesem Mountpunkt zu mounten. OmPS vor 6 Jahren 0
Warum nicht einfach das Disketten- / Gnome-Festplatten-Dienstprogramm verwenden? Es ist eine grafische Benutzeroberfläche (GUI) und bringt Dinge nicht auf andere Dinge Xen2050 vor 6 Jahren 0
@OmPS: Du meinst, ich müsste die ganze Arbeit erledigen (Pfad generieren, prüfen, ob der Pfad verwendet werden kann, und wiederhole, wenn nicht, dort einbinden)? Bowi vor 6 Jahren 0
@ Xen2050: Ich habe oft keine solchen GUIs, zum Beispiel wenn ich nur über SSH arbeite. Bowi vor 6 Jahren 0

1 Antwort auf die Frage

1
Xen2050

Das Gnome-Festplatten-Dienstprogramm verwendet udisks2. Es sieht so aus, udisksctlals wäre es ein Befehlszeilentool.

status Shows high-level information about disk drives and block devices.  info Shows detailed information about OBJECT or DEVICE.  mount Mounts a device. The device will be mounted in a subdirectory in the /media hierarchy - upon successful completion, the mount point will be printed to standard output.  The device will be mounted with a safe set of default options. You can influence the options passed to the mount(8) command with --options. Note that only safe options are allowed - requests with inherently unsafe options such as suid or dev that would allow the caller to gain additional privileges, are rejected.  unmount Unmounts a device. This only works if the device is mounted. The option --force can be used to request that the device is unmounted even if active references exists. 

Wenn der Mountpoint bereits vorhanden ist, erstellt und verwendet udksks2 einen neuen Mountpoint (wahrscheinlich durch Anhängen von a 1).

Sie sollten also in der Lage sein, ein Skript wie das folgende zu schreiben (verwenden Sie / dev / loop5 als Beispiel):

$ udisksctl mount --block-device /dev/loop5 Mounted /dev/loop5 at /media/demo/675584e8-d292-4c69-96d6-0fdb720bdf93.  # parse stdout for the mount point, do something with it  $ udisksctl unmount --block-device /dev/loop5 Unmounted /dev/loop5. 

(Könnte sogar schreibgeschützt werden, indem Sie --options rozu hinzufügen udisksctl mount)


Info aus dem Archwiki von Udisks - Mount Helpers

Montieren Sie Helfer

Die automatische Anbringung von Geräten wird mit den UDISK-Verpackungen problemlos erreicht. Siehe auch Liste der Anwendungen # Mount-Tools .

Hinweis: Desktop-Umgebungen wie GNOME und KDE stellen möglicherweise auch einen Uudisk-Wrapper bereit.

Wäre toll, aber ich habe dieses Werkzeug nicht. Bowi vor 6 Jahren 0
@Bowi einfach installieren, das Paket ist in Debian, Arch, Gentoo und wahrscheinlich für jede Linux-Distribution verfügbar. Das [archwiki on Udisks] (https://wiki.archlinux.org/index.php/udisks) schlägt einige Hilfsskripte vor, die vielleicht einen Blick wert sind. Ich werde sie in die Antwort einarbeiten. Xen2050 vor 6 Jahren 1