Je suis nouveau dans les scripts ... Je peux faire des trucs très basiques, mais maintenant j'ai besoin d'un coup de main.
J'ai un système de fichiers local qui ne sera monté que lorsque je devrai faire une sauvegarde.
Je commence par ça.
#!/bin/bash
export MOUNT=/myfilesystem
if grep -qs $MOUNT /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."; then
mount $MOUNT;
fi
Comme je l'ai dit, je suis très basique en script. J'ai entendu dire que vous pouvez vérifier l'état de la commande mount
en consultant les codes retour.
RETURN CODES
mount has the following return codes (the bits can be ORed):
0 success
1 incorrect invocation or permissions
2 system error (out of memory, cannot fork, no more loop devices)
4 internal mount bug
8 user interrupt
16 problems writing or locking /etc/mtab
32 mount failure
64 some mount succeeded
Je ne sais pas comment vérifier ça. Des conseils?
Vous pouvez vérifier le code d'état de mount
, et les exécutables les mieux écrits, avec le paramètre spécial Shell ?
.
De man bash
:
? Expands to the exit status of the most recently executed foreground pipeline.
Après avoir exécuté la commande mount
, exécutez immédiatement echo $?
imprimera le code d'état de la commande précédente.
# mount /dev/dvd1 /mnt
mount: no medium found on /dev/sr0
# echo $?
32
Tous les exécutables n'ont pas de codes d'état bien définis. Au minimum, il devrait sortir avec un code de réussite (0) ou d'échec (1), mais ce n'est pas toujours le cas.
Pour développer (et corriger) votre exemple de script, j'ai ajouté une construction imbriquée if
pour plus de clarté. Ce n'est pas le seul moyen de tester le code d'état et d'effectuer une action, mais c'est le plus facile à lire lors de l'apprentissage.
#!/bin/bash
mount="/myfilesystem"
if grep -qs "$mount" /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."
mount "$mount"
if [ $? -eq 0 ]; then
echo "Mount success!"
else
echo "Something went wrong with the mount..."
fi
fi
Pour plus d'informations sur "Exit and Exit Status", vous pouvez vous référer au Advanced Bash-Scripting Guide .
De nombreuses distributions Linux ont la commande mountpoint
. Il peut explicitement être utilisé pour vérifier si un répertoire est un point de montage. Aussi simple que cela:
#!/bin/bash
if mountpoint -q "$1"; then
echo "$1 is a mountpoint"
else
echo "$1 is not a mountpoint"
fi
Encore une façon:
if findmnt ${mount_point}) >/dev/null 2>&1 ; then
#Do something for positive result (exit 0)
else
#Do something for negative result (exit 1)
fi
Cochez si monté :
mount|grep -q "/mnt/data" && echo "/mnt/data is mounted; I can follow my job!"
Cochez si non monté :
mount|grep -q "/mnt/data" || echo "/mnt/data is not mounted I could probably mount it!"
Le moyen le plus simple qui ne nécessite pas de root est:
if $(df | grep -q /mnt/ramdisk); then
fi
ou pour voir s'il n'est pas monté:
if ! $(df | grep -q /mnt/ramdisk); then
fi
J'ai essayé avec le script ci-dessous
#!/bin/bash
echo "enter the file system to check whether its mounted or not"
read p
echo $p
for i in `cat /proc/mounts`
do
if [[ $p =~ $i ]]
then
echo "$p is mounted"
else
echo "$p is not mounted"
fi
done
La seule entrée que vous devez donner est le nom du système de fichiers