Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/05/2013, à 00:14

artik1024

[résolu] script avec valeur changeante demandée à l’exécution

Bonsoir ! J'ai une configuration assez simple, car depuis mon terminal je voudrais me placer toujours dans le même répertoire puis lancer une commande scp. Sauf qu'un dossier distant change souvent de nom. Je voudrais donc que mon script me demande à chaque lancement quel est le nouveau nom du dossier distant, afin de récupérer son contenu.

J'ai donc mon début de script qui me place dans mon dossier en local, puis qui lance la commande scp. Comment fait pour que mon script me demande la valeur, pour qu'il le chope ? :

#!/bin/bash
cd /share/MD0_DATA/qnap/grab/;
scp -r moi@62.154.20.12:/home/moi/tograb/DOSSIER/ .;
exit 0

Voilà, c'est cette valeur DOSSIER que je souhaite que mon script me demande à chaque lancement. Un peu d'aide serait bienvenue ^^

Dernière modification par artik1024 (Le 29/05/2013, à 14:08)

Hors ligne

#2 Le 29/05/2013, à 02:43

xavier4811

Re : [résolu] script avec valeur changeante demandée à l’exécution

Salut,

$ read dir
dossier
$ echo $dir
dossier

Hors ligne

#3 Le 29/05/2013, à 03:12

nesthib

Re : [résolu] script avec valeur changeante demandée à l’exécution

@artik1024 : pourquoi ne pas prendre le nom de fichier en argument ?

#!/bin/bash
cd /share/MD0_DATA/qnap/grab/;
scp -r moi@62.154.20.12:"$1" .;
exit 0
ton_script "ton/dossier/"

L'avantage, c'est qu'en plus tu bénéficies de la complétion smile


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#4 Le 29/05/2013, à 11:21

artik1024

Re : [résolu] script avec valeur changeante demandée à l’exécution

Tiens des hiboux comme moi wink Alors merci Xav pour ta réponse, mais j'ai pas compris comment l'insérer dans mon script (la valeur dossier est en dure ?)

nesthib ta méthode commence vraiment à être celle que je recherche. Je suis en revanche confronté à un soucis ... les dossiers qui ont des espaces ! Pour prendre un exemple concret, le premier jour le dossier va s'appeler :

marmotte

et le second :

marmotte en sucre

le script (que j'ai appelé dl) fonctionne très bien en faisant :

#!/bin/bash
cd /share/MD0_DATA/qnap/grab/;
scp -r moi@62.154.20.12:/home/moi/tograb/$1/ .;
exit 0

Du coup comme tu dis, ma première commande

dl marmotte

Fonctionne NIKELLE ! (Sauf qu'en scp la complétion n'est visiblement pas possible, TRES dommage !).
Mais pas ma seconde :

dl marmotte en sucre

Forcément puisque pour le scp "marmotte" "en" "sucre" sont 3 dossiers. Il ya un possibilité (hormis renommage des dossiers distants), que le script gère ce problème d'espaces ?

Ma ligne de commande  :

scp -r moi@62.154.20.12:/home/moi/tograb/"'marmotte en sucre'"/ .

fonctionne aussi. mais dès qu'elle est dans un script, ça ne marche plus, exemple :

#!/bin/bash
cd /share/MD0_DATA/qnap/grab/;
scp -r moi@62.154.20.12:/home/moi/tograb/"'$1'"/ .;
exit 0

puis

dl marmotte en sucre

nan, fonctionne pas hmm

Dernière modification par artik1024 (Le 29/05/2013, à 11:53)

Hors ligne

#5 Le 29/05/2013, à 13:10

xavier4811

Re : [résolu] script avec valeur changeante demandée à l’exécution

essaye avec

dl marmotte\\\ en\\\ sucre

ou avec read :

$ cat dl
#!/bin/bash
cd /share/MD0_DATA/qnap/grab/;
read -p 'Nom du dossier ?' dir
scp -r moi@62.154.20.12:/home/moi/tograb/${dir}/ .;
exit 0
$ dl
Nom du dossier?marmotte\\ en\\ sucre

Hors ligne

#6 Le 29/05/2013, à 13:56

nesthib

Re : [résolu] script avec valeur changeante demandée à l’exécution

artik1024 a écrit :

nesthib ta méthode commence vraiment à être celle que je recherche. Je suis en revanche confronté à un soucis ... les dossiers qui ont des espaces !

Tu as suppprimé les guillemets doubles que j'avais mis dans ma solution. Les espaces ne seront donc pas conservés.

artik1024 a écrit :

Fonctionne NIKELLE ! (Sauf qu'en scp la complétion n'est visiblement pas possible, TRES dommage !).

En fait, je vais faire ma mauvaise langue mais ce que tu cherches à faire ne sert à rien.

ssh-keygen
ssh-copy-id moi@62.154.20.12

rsync moi@62.154.20.12:/ho[tab]

Là j'ai l'impression que c'est le serveur qui va chercher les fichiers, mais tu peux très bien faire les choses dans l'autre sens. Pour ajouter un peu de sécurité à la clé privée, tu peux aussi mettre une phrase de passe et la déverrouiller au démarrage de la session (attention, elle doit être déverrouillée pour que la complétion fonctionne).


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#7 Le 29/05/2013, à 14:06

artik1024

Re : [résolu] script avec valeur changeante demandée à l’exécution

Merci à vous 2 !! Bon, mon associé m'a filé un coup de main après son réveil, et il m'a donc donné la solution, que de toutes façons je n'aurais pas trouvé seul ! Il fallait utiliser rsync (qui en plus permet le resume, etc etc).

Voilà le script fonctionnel :

#!/bin/bash

argument="rsync -avhSs --partial --progress --append-verify "
for var in "$@"
do
	argument=$argument"moi@62.154.20.12:'/home/moi/tograb/"$var"' "
done
argument=$argument"/share/MD0_DATA/qnap/grab/; exit;"

ssh admin@192.168.0.2 -t $argument
exit 0

Maintenant, je tape :

dl marmotte 'marmotte en sucre'

Ca me chope les 2 dossiers, en reprenant là il en était. Autre truc top, ce script peu même être lancé depuis une autre machine, puisque la ligne ssh admin@192.168.0.2 -t $argument permet de le placer à distance.

Un grand merci à vous 2 ! Ca a permis à mon associé de le convaincre qu'utiliser unison ou autre pour syncro n'était pas la méthode la plus fiable et la plus rapide !

Dernière modification par artik1024 (Le 29/05/2013, à 14:07)

Hors ligne

#8 Le 22/06/2013, à 11:26

artik1024

Re : [résolu] script avec valeur changeante demandée à l’exécution

Petites améliorations. Je me suis rendu compte que si ma connexion plantait, soit le téléchargement s'arrêtait, soit ça exitait. J'ai donc corrigé le soucis avec 2 nouveau cas de figure.

- Pour la connexion qui plante, j'ai ajouté un timout à ma commande rsync.
- Pour l'exit, j'ai bouclé tout ça avec 2 echos qui précisent si ça a planté, ou si le téléchargement s'est bien terminé (tout ça coloré en rouge ou vert)

Désormais, si la connexion plante, après 120 secondes le script reprend là ou il en était, jusqu'à ce que ça se termine wink pLus besoin de monitorer.

#!/bin/bash
while [ 1 ]
do
	argument="rsync -avhSs --partial --timeout=120 --progress --append-verify "
	for var in "$@"
	do
		argument=$argument"nickaardo@94.23.22.204:'/home/nickaardo/rtorrent/"$var"' "
	done
	argument=$argument"/share/MD0_DATA/qnap/torrents/; exit;"
	ssh admin@192.168.0.2 -t $argument
	if [ "$?" = "0" ] ; then
		echo -e "
			\e[1;32mrsync completed normally\e[0m
			"
		exit
	else
		echo -e "
			\e[1;31mRsync failure. Backing off and retrying...\e[0m
			"
		sleep 20
	fi
done

Hors ligne