Script de copie sur le réseau, ptit soucis

sfeltan

Membre confirmé
6 Juin 2006
78
0
voila, j'utilise le script backup_afp.sh chopé sur http://xrings.net/xrings/article.php3?id_article=325 , ça marche pas mal sauf qu'il ne démonte pas lecteur après chaque copie...
Qq1 aurait une idée??? Car à chaque fois ça ouvre une page finder et comme ce script va étre placé sur un poste rarement utilisé, ça serait cool d'éviter 50 fenétres finder quand on se sert du mac serveur sur lequel il va étre installé...
 
En fait le problème est: quand je lance ce script par le terminal, il démonte bien le lecteur réseau qu'il créé. Mais dès qu'il est programmé dans crontab avec un autre script (un script qui sauvegarde un fichier qui est envoyé sur le réseau par le script backup_afp.sh), non seulement il ne démonte jamais le lecteur réseau mais il ouvre une page finder, qui donne accès au poste réseau, à chaque éxécution du script...
 
S'il vous plait! Quelqu'un pour éclairer ma lanterne???
Ca devient urgent, c'est ma dernière tache en tant que stagiaire, mon stage finit demain soir et je voudrais bien que ça marche.
Ca fait plusieurs jours que je travaille là dessus, je me prend là téte dessus, j'ai pas arréter d'arceler supermoquette (que je remercie sincérement de sa patiente et de ses supers conseils).
Ayez pitié d'un pauvre chtit stagiaire qu'on a largué sur des macs alors qu'il n'en avait jamais touché y a encore 1 mois!!!
 
Voila mon script:



#! /bin/sh

# Script de sauvegarde automatique sur le serveur
# www.xrings.net - 2004

serveur="123.123.123.123" # utiliser l'un ou l'autre.

nom="admin"
# nom avec lequel on se connecte au serveur

pass=""
# Attention ce mot de passe est écrit en clair.

nom_volume="mac1"
# C'est le nom du volume sur lequel vous allez vous connecter par défaut

source="Users/nathalie/wikidb.sql"
# Ici on décide de sauvegarder tout le dossier de l'utilisateur Moi

cible="/Volumes/"${nom_volume}"/Backup"
# on va stocker l'archive dans le sous-dossier Moi, du dossier archives qui se trouve sur volume_cible

nom_archive=$(basename "${source}")
# récupère le nom exact du dossier

#***********************************************************************************

# Connexion au serveur via afp
open afp://"${nom}":"${pass}"@"${serveur}"/"${nom_volume}"

# on fait une pause de 5 sec pour laisser le temps au volume de monter
#+ dans le finder si ca ne suffit pas (réseau charger on peut passer à 10
sleep 5

/Library/MySQL/bin/mysqldump -u root -pobiwan wikidb > /Users/nathalie/wikidb.sql

# Archivage et compression

cp -f wikidb.sql "${cible}"/"${nom_archive}"


# Deconnexion du serveur
umount -fv /Volumes/mac1

exit 0
 
Peut-être que le problème vient du fait qu'un lecteur ne peut pas être démonté par n'importe qui et cron n'a pas les permissions pour le umount mais pour le "open afp".
Je te déplace dans Unix.
 
Par défaut, un élément de la crontab est exécuté avec les droits de l'utilisateur de la crontab.
Si c'est 'root' (ce qui n'est pas très conseillé), le script devrait avoir le droit de monter le volume.

Mais ce que je ne comprends pas est l'utilisation de la commande 'open' pour ouvrir le volume distant ... Pour sûr que 'open' a tendance à ouvrir une fenêtre du Finder. Pourquoi ne pas utiliser 'mount' ? Un problème technique ?
 
pour étre honnéte, j'ai chopé le script sur http://xrings.net/xrings/article.php3?id_article=325 et j'ai juste efféctué les changements de paramétre (adresse IP...) vu que j'avais jamais touché à des script avant...
Je vais déja essayé en utilisateur root voir ce que ça donne.
Quand au mount, j'ai fait une tentative hier mais la doc du man mount m'a un peu découragé, je vais m'y repencher là dessus.
 
Autre fait bizarre, c'est que quand je lance la tahce manuellement (sh /backup2.sh) il me demande rien, fait la connection tt seul et démonte le lecteur, alors que quand c'est planifié dans crontab, il me demande la confirmation de connection et ne démonte pas le lecteur...
 
mais en fait le fait qu'il démonte pas le lecteur réseau, ça vient de quoi??? Du fait qu'il est "monté" avec open et démonté avec umount et du coup umount n'arrive pas à s'éxécuter? En gros c'est ça ou je me plante?
 
Le fait d'utiliser l'un (open) puis l'autre (umount) n'est pas gênant.
Mais il est plus logique, dans un script, d'utiliser la commande UN*X classique mount. Elle doit te permettre de faire ce que tu veux. Et elle ne devrait pas provoquer l'ouverture d'une fenêtre de Finder. Tandis que open, par défaut, ouvre une fenêtre de Finder quand on lui passe un dossier en paramètre.
Disons que mount est exactement la commande à utiliser. Aussi devrais-tu faire l'effort d'essayer de comprendre la page de manuel (ou regarder un howto ou une FAQ sur Internet).
 
J'oubliais : tu devrais tatouiller ton script pour le debugger : en mettant des commandes qui écrivent des choses intéressantes dans un fichier quelconque que tu lirais ensuite.
Par exemple pour voir la différence de contexte entre le lancement à la main et le lancement par cron. Par exemple :
Bloc de code:
set > /tmp/bof.log
Dans le fichier tu retrouves toutes les variables d'environnement : peut-être y a-t-il une différence de contexte due au profil (~/.bashrc ou ~/.profile ou ~/.bash_profile par exemple) de l'utilisateur concerné.
 
Et la sous-commande mount_afp ?
 
ba je viens de mater l'aide de mount_afp... Franchement c du chinois pour moi ces docs! bon je vais continuer à mater ça
 
j'ai tapé ceci:

mount afp://mac2:[email protected]/Users/JP

mac2 = poste à atteindre
a = mot de passe du poste
192.168.3.59 = adresse IP du mac à atteindre
/JP = répertoire à monter

Il me met cette erreur: mount: afp://pao8:[email protected]/Users/nathalie: unknown special file or file system.

D'après ce que j'ai compris c'est la bonne manip. Enfin apparement non