Lista de rótulos de partições vs dispositivos usando dbus / udisks no bash

0

Eu tenho um problema onde usar dbus e udisks parece ser a melhor abordagem. Então eu inventei um problema: crie uma tabela de rótulos e dispositivos para cada partição "instalada" ala:

  ""      /dev/sda1
  "ROOT"   /dev/sda2
  "BACKUP" /dev/sdb1
   ...

a coisa é que quanto mais penso em como abordar isso, mais confuso fico. Alguém pode fazer algumas sugestões?

    
por Mouse.The.Lucky.Dog 30.05.2013 / 20:59

3 respostas

1

Talvez algo ao longo destas linhas:

udevadm info --export-db | sed  '
  /^E: DEVNAME=/{s///;h;d;}
  /^E:[^=]*LABEL=/!d
  G;s/[^=]*=\(.*\)\n/"" /'

O udisks equivalente é:

udisks --dump | sed '
  /^[[:blank:]]*device-file:[[:blank:]]*/{s///;h;d;}
  /^[[:blank:]]*label:.*[^[:blank:]]/!d
  G;s/[^:]*:[[:blank:]]*\(.*\)\n/"" /'
    
por 30.05.2013 / 22:06
1

Acho que o que você está procurando já é fornecido pelo comando blkid :

/dev/sda1: LABEL="SYSTEM_DRV" UUID="10BE12331238FD148" TYPE="ntfs" 
/dev/sda2: LABEL="Windows7_OS" UUID="5CF2E12AD3438B42" TYPE="ntfs" 
/dev/sda3: LABEL="Lenovo_Recovery" UUID="C43211B2399007C54" TYPE="ntfs" 
/dev/sda5: UUID="4835b90f-4845-1234-8dcd-fbcf332338f8" TYPE="ext4" 
/dev/sda6: UUID="av6WTb-CU69-4Ump-10dD-sudd-fTtC-Gf12AL" TYPE="LVM2_member" 
/dev/mapper/vg_grinchy-lv_root: UUID="75e0a75d-45d3-463c-bd87-9f7e123fd456" TYPE="ext4"

Se você está tentando obter uma lista específica de informações, você pode obtê-la usando os comandos blkid -o list e alguns awk da seguinte forma:

$ blkid -o list|tail -n +3|awk '{print "\""$3"\"", $1}'|sed 's/(not//'|column -t
"SYSTEM_DRV"       /dev/sda1
"Windows7_OS"      /dev/sda2
"Lenovo_Recovery"  /dev/sda3
"/boot"            /dev/sda5
""                 /dev/sda6
"/"                /dev/mapper/vg_grinchy-lv_root
"<swap>"           /dev/mapper/vg_grinchy-lv_swap
"/home"            /dev/mapper/vg_grinchy-lv_home

Veja a blkid man page para mais detalhes .

    
por 30.05.2013 / 21:43
0
awk '$4 ~ /^sd[a-z][1-9][0-9]?/ {label="";
  cmd="blkid -o value -s LABEL /dev/" $4;
  cmd | getline label;
  printf "\"%s\": /dev/%s\n",label,$4;}' /proc/partitions
    
por 30.05.2013 / 22:10

Tags