SD 카드 리더기의 SD 카드가 어떤 장치에 연결되어 있는지 알려주는 스크립트

SD 카드 리더기의 SD 카드가 어떤 장치에 연결되어 있는지 알려주는 스크립트

SD 카드 리더기가 있습니다. 다양한 크기의 SD 카드를 연결할 수 있는 세 가지 위치의 간단한 USB 장치입니다.

/dev/sdbSD 카드를 꽂았을 때 다음 명령으로 SD 카드를 사용할 수 있다는 것을 알 수 있습니다.

df -h

blkid -o list

fdisk -l

다음을 자동으로 수행하는 스크립트를 만드는 것이 가능합니까?

  1. SD 카드를 사용할 수 있는 장치 블록을 알려주세요(예: /dev/sda또는 /dev/sdb등..)
  2. SD 카드를 마운트 해제합니다.

udevadm info -a -n /dev/sdb내 SD 카드 리더에 대해 고유한 ATTRS{idVendor}, ATTRS{idProduct} 및 ATTRS{serial} 세부정보를 만들었습니다 .

스크립트가 이러한 세부 정보가 포함된 장치 블록을 가져올 수 있습니까?

답변1

몇 시간의 인터넷 검색 끝에 찾았습니다.이 유용한 답변.

사용한 df -hblkid -o listSD 카드가 에 있다는 것을 알았습니다 /dev/sdb. 그런 다음 udevadm info -a -n /dev/sdb내 SD 카드 리더(USB 장치)의 ProductID, VendorID 및 일련 번호를 찾는 데 사용했습니다.

이제 SD 카드 리더를 다른 컴퓨터에 연결한다고 가정해 보겠습니다. 이 스크립트는 모든 장치 블록을 반복 /dev/sdX하고 SD 카드 리더가 연결된 장치 블록을 보고합니다.

#!/bin/bash

# If ALL of these variables have values then you get "Success" below.
# If one or more of the variables do not contain a value (unset) or are null then you get "Failure" below.
# These are unique identifiers of the sd card reader
str_vendor="54jf"
str_product="775y"
str_serial="ID_SERIAL_SHORT=519S83946286"

for BLOCK in $(ls /dev | grep "^sd[a-z]$")
do
    echo "Device block " $BLOCK
    grep_vendor=$(udevadm info --query=all /dev/$BLOCK | grep $str_vendor)
    grep_product=$(udevadm info --query=all /dev/$BLOCK | grep $str_product)
    grep_serial=$(udevadm info --query=all /dev/$BLOCK | grep $str_serial)
    echo $grep_vendor
    echo $grep_product
    echo $grep_serial
    
    # From a comment to answer in above link... adding the colon [:] means to test if the variable is null OR unset
    # The udevadm commands result in the grep_* variables becoming NULL if the command returns nothing. (not sure?)
    # This is why the colon is needed. Note: Some reported that "This doesn't work in scripts where set -u is used"
    if [ -z ${grep_vendor:+x} ] || [ -z ${grep_product:+x} ] || [ -z ${grep_serial:+x} ]; then
        echo "Failure"
    else
        echo "Success"
    fi
    
done

변수의 상태를 확인하는 방법이 스레드.

이 기능이 필요한 이유는 단순히 스크립트를 실행하여 SD 카드 리더기에 연결된 모든 SD 카드를 빠르게 분할하고 포맷할 수 있기 때문입니다.

어떤 피드백이라도 환영합니다!

건배,

관련 정보