연결된 모든 HDD 장치를 스크립트 친화적인 방식으로 나열하는 방법은 무엇입니까?

연결된 모든 HDD 장치를 스크립트 친화적인 방식으로 나열하는 방법은 무엇입니까?

연결된 모든 HDD 장치를 스크립트 친화적인 방식으로 나열하는 방법은 무엇입니까? All - 마운트된 것과 마운트되지 않은 것을 모두 의미합니다. 스크립트 친화적 - 최소한의 grep'ing 또는 sed'ing으로 쉘 스크립트에 마운트하는 데 사용할 수 있는 것을 의미합니다.

내 임무는 시작 시 HDD가 어디에 있는지 파악하고(연결되어 있는 경우) 이를 마운트하는 스크립트를 작성하는 것입니다. 내 스크립트에서는 /dev에서 사용 가능한 장치 목록을 가져오는 방법이 필요합니다. 스크립트에 어떤 도구를 사용해야 합니까?

내가 고려한 옵션은 다음과 같습니다.

  • fdisk -l 필요한 것보다 훨씬 더 많은 정보를 제공합니다. 쉘에서 출력을 구문 분석하는 것이 약간 어렵습니다.
  • parted -l 마운트되지 않은 파티션을 나열하지 않으며 많은 추가 정보도 표시합니다.
  • cat /proc/partitions 최상의 출력을 제공하지만 마운트되지 않은 파티션은 나열하지 않습니다.

내 작업에 가장 적합한 도구는 무엇입니까?

내가 어디에서 왔는지 명확히하기 위해 내 상황은 다음과 같습니다.

일부 PC 사용자는 USB 또는 SATA를 통해 일부 HDD를 연결합니다. 그런 다음 사용자는 PC를 다시 시작합니다. 저는 HDD 장치에 대해 아무것도 모릅니다. ext4 파일 시스템이 있는 파티션이 하나 있다고 가정할 수 있습니다. 장치는 /dev/sda 또는 /dev/sdb로 나타날 수 있습니다. 장치에 대한 su 액세스 권한이 있고 내 스크립트를 /etc/rc.local 또는 다른 곳에 추가할 수 있지만 이 액세스 권한은 PC를 사용자에게 넘겨주기 전에만 부여됩니다.

답변1

아마도 blkid다음과 같은 형식의 행이 제공될 것입니다.

/dev/sdXX: UUID="<UUID>" TYPE="<fstype>"

또한 다음에서 해당 UUID를 사용할 수 있습니다 fstab. UUID="<UUID>"장치 경로를 바꿀 수 있습니다 /dev/sdXX.

답변2

udisk가 있는 배포판

 udisks --enumerate-device-files | grep -v ^/dev/disk

관련 정보