J'ai un script que j'utilise pour formater toute carte SD insérée, y copier les données de dossiers spécifiques, puis l'éjecter.
Chaque formatage/copie est déclenché manuellement, dans le cadre d'un processus de traitement par lots concernant une centaine de cartes. Je ne crains donc pas d'appuyer sur le bouton Start au mauvais moment ou sur la mauvaise carte.
Ce que j'essaie de trouver, c'est comment être absolument sûr que j'écris au bon endroit. disque
C'est ma ligne "importante".do shell script "diskutil eraseDisk \"MS-DOS FAT16\" " & diskName & " MBRFormat disk6"
Le site disk6
n'est pas absolue, car je n'ai pas toujours le même nombre de disques montés. Je peux le vérifier manuellement avant de lancer le lot, à l'aide de la commande diskutil list
puis changez ce paramètre dans le script.
Ce que j'aimerais pouvoir faire, c'est que le script vérifie lui-même quel lecteur il devrait être, puis l'insère comme variable, évitant ainsi tout "mauvais choix".
Les lecteurs exclus sont les disques non amovibles et les disques RAM [les volumes non montés tels que EFI et Recovery n'ont probablement pas besoin d'être filtrés] - ces derniers ont des noms de volumes connus - mais je n'arrive pas à trouver comment définir un nom de volume trouvé [connu ou inconnu, car les cartes SD peuvent s'appeler à peu près n'importe quoi avant de commencer] à un numéro de disque spécifique.
Précisions sur le lecteur de cartes, intégré à mon moniteur, Dell U2713H
Connexion via USB2 à partir d'un Mac Pro 4,1 [avec mise à jour matérielle 5,1].
USB Hi-Speed Bus:
Host Controller Location: Built-in USB
Host Controller Driver: AppleUSBEHCI
PCI Device ID: 0x3a3c
PCI Revision ID: 0x0000
PCI Vendor ID: 0x8086
Bus Number: 0xfa
Hub:
Product ID: 0x8043
Vendor ID: 0x0451 (Texas Instruments)
Version: 1.00
Serial Number: 79000089BFB9
Speed: Up to 480 Mb/sec
Location ID: 0xfa200000 / 2
//snips other devices//
USB3.0 Card Reader:
Product ID: 0x0307
Vendor ID: 0x0bda (Realtek Semiconductor Corp.)
Version: 1.63
Serial Number: 201006010301
Speed: Up to 480 Mb/sec
Manufacturer: Realtek
Location ID: 0xfa233000 / 5
Exemple de sortie de df
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk1s2 1950314272 485618064 1464184208 25% 60766256 183023026 25% /
devfs 412 412 0 100% 714 0 100% /dev
/dev/disk0s2 3906357344 1195025808 2711331536 31% 149378224 338916442 31% /Volumes/JuSpace
/dev/disk3s2 1951855464 635192376 1316663088 33% 79399045 164582886 33% /Volumes/Downloads
/dev/disk2s2 5858067520 2309215360 3548852160 40% 144325958 221803260 39% /Volumes/OhDaSpace
/dev/disk4s2 5753889792 4638480736 1115409056 81% 289905044 69713066 81% /Volumes/TMach
map -hosts 0 0 0 100% 0 0 100% /net
map auto_home 0 0 0 100% 0 0 100% /home
/dev/disk3s4 408324240 210669592 197654648 52% 200589 98828207 0% /Volumes/MacWin7
/dev/disk5 2097152 700536 1396616 34% 87565 174577 33% /Volumes/RAM Disk
/dev/disk7s1 1936768 104192 1832576 6% 512 0 100% /Volumes/F_CARD
Ou... Utilisation de ioreg -l
avec le résultat suivant
| | | | +-o Generic- SD/MMC/MS/MSPRO Media <class IOMedia,$
| | | | | {
| | | | | "Removable" = Yes
| | | | | "Content" = "FDisk_partition_scheme"
| | | | | "Whole" = Yes
| | | | | "Leaf" = No
| | | | | "BSD Name" = "disk7"
comment puis-je réparer quelque chose comme grep -A 100 SD/MMC/MS/MSPRO Media | grep disk | awk...
pour trouver le disk7