На данный момент у меня есть настройка udev для выполнения сценариев при подключении или удалении USB-накопителя, но я застрял, пытаясь выяснить, есть ли способ выполнить сценарий для чтения файла. с последнего подключенного USB-устройства.
Я использую usbmount для автоматического монтирования всех своих флешек, и монтируются они по такой схеме:
/dev/sdb1 15G 8.0K 15G 1% /media/usb0
/dev/sdc1 15G 8.0K 15G 1% /media/usb1
/dev/sdd1 15G 8.0K 15G 1% /media/usb2
/dev/sde1 15G 8.0K 15G 1% /media/usb3
Так, например, когда я подключаю USB-накопитель № 5, он автоматически монтируется в /media/usb4, затем я хотел бы сказать выполнить «cat /media/usb4/data.txt > /tmp/output.txt» и только тот диск, который был только что подключен. В идеале я хотел бы, чтобы это работало независимо от номера, назначенного /media/usbx, так что, если я повторно подключу устройство 2, он выполнит сценарий только для этого устройства, а не остальные.
Любые идеи о том, как это можно сделать с помощью сценариев bash, предпочтительно, но открыты для других идей.
Спасибо за уделенное время.
------------- РЕДАКТИРОВАТЬ
Я придумал способ, хотя он определенно не самый красивый и, может быть, даже не самый надежный:
$ sudo tail -n2 /var/log/syslog
Oct 4 14:40:58 development usbmount[32250]: executing command: mount -tvfat -osync,noexec,nodev,noatime,nodiratime /dev/sda1 /media/usb0
Oct 4 14:40:58 development usbmount[32250]: executing command: run-parts /etc/usbmount/mount.d
$
Итак, теперь, чтобы сократить это до точки монтирования носителя,
$ sudo tail -n2 /var/log/syslog |grep media | awk '{print $12}'
/media/usb0
$
При условии отсутствия других ошибок или чего-либо, заполняющего последние два места в системном журнале, я могу выполнять сценарии, используя что-то вроде:
#!/bin/bash
device=`sudo tail -n2 /var/log/syslog |grep media | awk '{print $12}'`
cat $device/data.txt > /tmp/output.txt