[RÉSOLU] SHELL SCRIPT : monter/démonter un volume |
Bienvenue invité ( Connexion | Inscription )
[RÉSOLU] SHELL SCRIPT : monter/démonter un volume |
6 Jan 2017, 10:06
Message
#1
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 309 Inscrit : 17 Oct 2006 Lieu : Strasbourg, France Membre no 70 694 |
Salut,
J'ai écrit un petit script qui me permet de monter ou de démonter un volume en fonction de la présence de ce dernier. Il fonctionne, mais ça semble pas très propre car le terminal me retourne une erreur. Qu'en pensez-vous ? Code #!/bin/sh if [ ! `mount | grep DATA` ] then diskutil mountDisk /dev/disk1s2 else diskutil unmount /dev/disk1s2 fi Merci Ce message a été modifié par clarusad - 8 Jan 2017, 14:49. |
|
|
6 Jan 2017, 10:30
Message
#2
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 969 Inscrit : 26 Jan 2011 Lieu : Pollachius virens Membre no 164 083 |
On est autorisé à connaitre l'erreur renvoyée ou il faut jouer aux devinettes ?
-------------------- MBP 2017 15" avec clavier pourri et touchbar inutile
|
|
|
6 Jan 2017, 17:36
Message
#3
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 309 Inscrit : 17 Oct 2006 Lieu : Strasbourg, France Membre no 70 694 |
Effectivement : ça peut aider à m'aider ^^
Code ./script: line 2: [: too many arguments
|
|
|
6 Jan 2017, 18:21
Message
#4
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 4 969 Inscrit : 26 Jan 2011 Lieu : Pollachius virens Membre no 164 083 |
Ah c'est un classique ça. C'est le résultat de mount | grep DATA qui contient plusieurs mots séparés par des espaces, donc tu as des arguments en trop dans ton test.
Essaie avec les doubles [[ ]], mais faut passer sur du bash, il me semble que c'est pas reconnu avec sh. Code #!/bin/bash if [[ ! `mount | grep DATA` ]] then diskutil mountDisk /dev/disk1s2 else diskutil unmount /dev/disk1s2 fi ou alors avec des doubles quotes Code #!/bin/sh if [ ! "$(mount | grep DATA)" ] then diskutil mountDisk /dev/disk1s2 else diskutil unmount /dev/disk1s2 fi Edit : correction second exemple, suppression doubles crochets Ce message a été modifié par yponomeute - 6 Jan 2017, 18:34. -------------------- MBP 2017 15" avec clavier pourri et touchbar inutile
|
|
|
6 Jan 2017, 18:59
Message
#5
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 309 Inscrit : 17 Oct 2006 Lieu : Strasbourg, France Membre no 70 694 |
Ah, la bonne blague : pas facile à déjouer ces pièges.
Super, ça fonctionne mieux... Mais c'est pas encore ça :-/ Depuis le passage de 10,6 à 10.11, El Capitan refuse de mettre en veille un disque dur externe en FW ; et ça le faisait bien sous Snow Leo, merci Apple... Le disque étant très bruyant, ça devient vite pénible ! Or la commande : diskutil unmount /dev/disk1s2 démonte bien la partition, mais le disque tourne toujours ! J'ai donc préféré utiliser AppleScript : osascript -e 'tell application "Finder" to eject disk "DATA"' Et la, le le bouzin se calme parfaitement :-) Code #!/bin/bash if [[ ! `mount | grep DATA` ]] then diskutil mountDisk /dev/disk1s2 else #diskutil unmount /dev/disk1s2 osascript -e 'tell application "Finder" to eject disk "DATA"' fi La question devient donc : quelle est la commande en bash correspondant à l'AppleScript ? Merci |
|
|
7 Jan 2017, 13:30
Message
#6
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 486 Inscrit : 29 Aug 2002 Membre no 3 340 |
Consulte le manuel de umount, c'est bien UMOUNT, sans N
man umount JP |
|
|
8 Jan 2017, 14:48
Message
#7
|
|
Macbidouilleur de bronze ! Groupe : Membres Messages : 309 Inscrit : 17 Oct 2006 Lieu : Strasbourg, France Membre no 70 694 |
umount ne fonctionne pas plus !
En revanche, tu m'as mis sur la piste Jaypee : en consultant le man de OS X, j'ai découvert que la solution était encore plus simple ! Code diskutil eject /dev/disk1s2 Pourquoi faire simple quand on peut compliquer |
|
|
14 Jan 2017, 15:46
Message
#8
|
|
Macbidouilleur d'Or ! Groupe : Rédacteurs Messages : 5 064 Inscrit : 19 Feb 2002 Lieu : BZH Membre no 2 083 |
Le soucis avec Mac OS X est que le numéro de la partition change :-(
Tu peux faire un peu plus clean en démontant le bon disque, avec la commande suivante (dans le cas d'un volume se nommant "CLONE_FREECOM", monté /Volumes/CLONE_FREECOM, partition disk2s2) : /usr/sbin/diskutil list | /usr/bin/grep "CLONE" | /usr/bin/grep -o 'disk[0-9]*' | /usr/bin/grep -v grep La commande renvoie (dans mon cas) : disk2 Que tu démontes ensuite : /usr/sbin/diskutil unmountDisk $myDrive2Remove PS : tu stockes la variables $myDrive2Remove plus haut dans ton script : export $myDrive2Remove =`/usr/sbin/diskutil list | /usr/bin/grep "CLONE" | /usr/bin/grep -o 'disk[0-9]*' | /usr/bin/grep -v grep` -------------------- Quis custodiet ipsos custodes ? - Lorsqu'un sujet est résolu, merci d'indiquer [Résolu] dans le titre de votre post !
Luttons contre le style SMS !!! iPhone 14Pro Max 256 Go iOS 17• MacBook Pro 16 2019 Core i9 - macOS 12.7.2 - 32 GB RAM - 2 TB • @Orange Linux • OPNSense / pfSense • Une pointe de Windows aussi • Enfocus Switch Expert • callas pdfToolBox |
|
|
Nous sommes le : 26th April 2024 - 20:23 |