Como detectar a unidade flash USB desconectada

1

Em um processo de backup, o programa precisa copiar o arquivo tar.gz para uma unidade flash USB montada. O programa (nodeJS) usa a API child_process.exec() para executar o script de shell. A função em si obtém o stdio .

Então, usando um script de shell, como posso verificar se o USBFlashDrive está desconectado / desconectado?

O dispositivo geralmente aparece como sd[a-z]1 - observe a regex na string.

    
por Hairi 16.05.2018 / 11:32

3 respostas

0

Sugiro

lsusb

de acordo com seu autor,

lsusb is a utility for displaying information about USB buses in the system and the devices connected to them.

Um exemplo:

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

Então, como você vê, a sétima linha da saída mostra detalhes sobre a unidade flash (unidade USB) que está conectada agora ao computador (via porta USB).

    
por singrium 17.05.2018 / 09:15
0

Para verificar quais discos USB estão conectados, procure em /dev/disk/by-path/

ls -l /dev/disk/by-path/*usb*  | grep -v "part" | awk '{print $NF}'|  awk -F "/" '{print $NF}' | sort

A saída do comando anterior listará apenas os discos usb.

grep -v "part" - exclui as partições.

sdb
sdc

Em seguida, o comando lsblk pode imprimir algumas informações úteis, como modelo e tamanho.


#!/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

Para verificar onde as partições dos discos USB são montadas

#!/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
    
por user829010 17.05.2018 / 09:01
0

Eu não sei muito sobre nodeJS (eu sou um cara C ++), mas você pode verificar a presença de drive na pasta /dev/ .

Quando conecto meu pen drive, recebo o arquivo /dev/sdc . Se eu desconectei, então /dev/sdc desaparece.

Aqui estão mais algumas informações sobre Como para verificar se existe um arquivo em um script de shell

    
por noone 16.05.2018 / 11:56