На процессе резервного копирования программа должна скопировать tar.gz
файл к смонтированной карте флэш-памяти с интерфейсом USB. Программа (nodeJS) использует API child_process.exec()
выполнять сценарий оболочки. Сама функция получает stdio
.
Так, с помощью сценария оболочки, как я могу проверить, разъединяется ли USBFlashDrive/отключается?
Устройство обычно появляется как sd[a-z]1
- отметьте regex в строке.
Я предлагаю
lsusb
по словам его автора,
lsusb
утилита для отображения информации о Шинах USB в системе и устройствах, подключенных к ним.
Пример:
hani@My-FRIEND:~$ lsusb
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 005: ID 8087:07dc Intel Corp.
Bus 002 Device 004: ID 04f2:b3a3 Chicony Electronics Co., Ltd
Bus 002 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 002 Device 007: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
Bus 002 Device 002: ID 0458:0185 KYE Systems Corp. (Mouse Systems)
Bus 002 Device 006: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Таким образом, как Вы видите, седьмая строка выходных выставочных деталей о флеш-накопителе (Карта памяти), которая включается прямо сейчас к компьютеру (через USB-порт).
Для проверки, какие диски USB соединены, заглядывают /dev/disk/by-path/
ls -l /dev/disk/by-path/*usb* | grep -v "part" | awk '{print $NF}'| awk -F "/" '{print $NF}' | sort
Вывод предыдущей команды перечислит только диски usb.
grep -v "part"
- исключает разделы.
sdb
sdc
Затем lsblk
команда может распечатать некоторую полезную информацию как модель и размер.
#!/bin/bash
for usb in $(ls -l /dev/disk/by-path/*usb* | grep -v "part" | awk '{print $NF}'| awk -F "/" '{print $NF}')
do
lsblk -n -d -o NAME,MODEL,VENDOR,SIZE,RM /dev/$usb
done
Проверять, где разделы дисков USB смонтированы
#!/bin/bash
for usbp in $(ls -l /dev/disk/by-path/usb | grep "part" | awk '{print $NF}'| awk -F "/" '{print $NF}')
do
findmnt -rno TARGET /dev/$usbp
done
Я не знаю много о nodeJS (я - парень C++), но можно регистрировать присутствие диска /dev/
папка.
Когда я включил свой перьевой диск, я получаю файл /dev/sdc
. Если я отключил его затем /dev/sdc
исчезает.
Вот еще некоторая информация о том, Как проверить, существует ли файл в сценарии оболочки