Petit script bash


#1

salut à tous,

j’ai à ma disposition un DD réseau que je plug sur un switch lorsque je veux faire un backup.

j’ai essayé d’écrire un petit script qui monte le DD, copie ce qu’il y a à copier, démonte le DD, les commandes fonctionnes en console mais lorsque je lance le script, il me sort des erreurs…

[quote]#!/bin/bash

Script de backup semi automatique

sudo smbmount //IP_du_DD/Dossier_de_backup/ /mnt/DDresau -o username=xxxxx,password=xxxxx
cp -R /usr/original/* /mnt/DDreseau/backup-date +%d-date +%B-date +%Y/
sudo umount /mnt/DDreseau

exit 0[/quote]

vu le nombre de lignes… c’est vraiment domage de devoir faire appel à vous, mais bon, ca marche en ligne de commande, mais pas quand je lance le script, une idée ?
je précise que le compte depuis lequel je lance cette commande n’a pas de mdp a entrer pour avoir les droits root via sudo


#2

slt

Y’a t’il des messages d’erreurs en particuliers ? parceque je ne voit pas d’erreurs dans le mini-script.


#3

En fait, si tu nous donnais l’erreur, ça aiderait vachement.

Pourquoi mets-tu la 1ère ligne en commentaires ? C’est le go bang (chemin vers le shell à utiliser)


#4

Elle n’est pas en commentaire. C’est comme ça que j’indique l’interpréteur de commandes moi-aussi :confused:


#5

slt,

Oui le dieze suivit de l’intrepeteur est obligatoire, ca peut etre “sh, bash, perl, awk, etc…” ca permet au kernel de savoir quel interpreteur va etre utiliser.


#6

[quote]$./backup
11619: tree connect failed: ERRDOS - ERRnosuchshare (You specified an invalid share name)
SMB connection failed
cp: target `/mnt/DDresau/backup-03-mars-2006/’ is not a directory: Aucun fichier ou répertoire de ce type
umount: /mnt/DDreseau: n’est pas monté[/quote]

excusez moi de ne pas avoir mis l’erreur de suite…
précisions supplémentaires, je suis logguer en ssh sur une machine distante, j’ai écris le script puis l’exécuté, tout en ssh, je pense que ssh ne change rien la dedans, mais je tenais qd mm à le préciser

fsoumil, cette ligne est en commentaire parce que… mon prof linux m’a enseigné ainsi. de toute facon, le shell par defaut étant bash, ca ne change rien au problème.

merci de vous pencher sur mon pb :slightly_smiling:


#7

slt,

Tu porte des lunnettes que tu n’as pas mis ? :wink:


#8

[quote]$ sudo smbmount //IP_DD/Dossier_backup /mnt/DDreseau -o username=xxxxx
Password:
$ mount
/dev/sda2 on / type reiserfs (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
tmpfs on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
usbfs on /proc/bus/usb type usbfs (rw)
//IP_DD/Dossier_backup on /mnt/DDreseau type smbfs (0)[/quote]

je porte en effet des lunettes :open_mouth:
mais vu que ca marche en ligne de commande… je comprend pas pourquoi il me répond ca ! :neutral_face:


#9

[quote=“fsoumil”]
Pourquoi mets-tu la 1ère ligne en commentaires ? C’est le go bang (chemin vers le shell à utiliser)[/quote]
Ah oui quand je veux, je peux vraiment faire le boulet ! :laughing:


#10

[quote]#!/bin/bash

Script de backup semi automatique

sudo smbmount //IP_du_DD/Dossier_de_backup/ /mnt/DDresau -o username=xxxxx,password=xxxxx
[/quote]
J’ai trouvé :smiley:
Ce serait pas plutôt /mnt/DDreseau que /mnt/DDresau ?

Yep, t’avais pas tes lunettes 8)


#11

en fait, j’ai fais un copier coller de ma ligne de commande dans mon script, j’avais aussi pensé à une erreur de frappe, j’ai juste rajouté le pass pour que ca se fasse tout seul… mais non… ca donne toujours la même erreur

pour info, “DDreseau” n’est pas le vrai nom du partage, cette faute de frappe à eu lieu pendant la modification des chemins… un vieux coup de psycho quoi ^^


#12

C’est quoi maintenant le messages d’erreurs ?

Si c’est :

11619: tree connect failed: ERRDOS - ERRnosuchshare (You specified an invalid share name) 

C’est que tu spécifie un chemin de partage incorrect.


#13

ben toujours la meme erreur…

faut-il que je change mes lunettes… ??
bon, je vais faire une comparaison “lettre à lettre” entre ma ligne de commande et mon script…


#14

Ecoute un script shell c’est une suite de commande shell, donc vérifié bien ce que tu tape, soit vigilant.


#15

euuu bon… je pensais pas, mais en fin de compte… si :unamused:

je vais me cacher !! vite vite vite !!

j’avais mis /IP_DD/Dossier_partagé/
il aime pas le dernier /

bon maintenant, il me dit :

[quote]$ ./backup
cp: target `/mnt/DDreseau/backup-03-mars-2006/’ is not a directory: Aucun fichier ou répertoire de ce type[/quote]

cp n’est pas capable de créer le dossier “backup-03-mars-2006” ???
je rajoute une ligne sudo mkdir…

j’en ai marre de faire autant de conneries…


#16

slt,

man cp !


#17

Sinon, dans ton script, tu peux faire qqch du genre

if test ! -d /backupdirectory mkdir /backupdirectory fi


#18

j’avou que des fois les manpages sont pas des + évidentes… :

merci pour cette tite ligne de script fsoumil :slightly_smiling:


#19

je reviens sur mon petit script,

j’ai défini la variable $rep comme étant l’emplacement de la sauvegarde et la variable $listing qui contient tout ce qui se trouve sur la racine du partage. je souhaite faire un fichier texte contenant la liste des fichiers se trouvant dans chacune des sauvegardes.

[quote]grep “/partage/marketing” $listing > $rep’marketing.lst’
grep “/partage/project” $listing > $rep’projectdocs.lst’
grep “/partage/commerical” $listing > $rep’commercial.lst’
grep “/partage/admin” $listing > $rep’admin.lst’
grep “/partage/test” $listing > $rep’test.lst’[/quote]

j’ai essayé de changer $rep’fichier.lst’ par ${rep}fichier.lst mais ca ne change rien.
dans un shell il interprete correctement la variable…

les erreurs :

[quote]./backupautres: line 24: $rep’marketing.lst’: ambiguous redirect
./backupautres: line 25: $rep’projectdocs.lst’: ambiguous redirect
./backupautres: line 26: $rep’commercial.lst’: ambiguous redirect
./backupautres: line 27: $rep’admin.lst’: ambiguous redirect
./backupautres: line 28: $rep’test.lst’: ambiguous redirect[/quote]

quelqu’un a t-il une idée ?


#20

bon, finalement, je m’en suis sorti, pour ce point la…