Script bash zenity copier des fichiers avec scp
Fermé
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
-
Modifié par xunil2003 le 19/02/2015 à 22:16
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 20 févr. 2015 à 12:10
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 20 févr. 2015 à 12:10
A voir également:
- Script bash zenity copier des fichiers avec scp
- Script vidéo youtube - Guide
- Comment copier une vidéo youtube - Guide
- Renommer des fichiers en masse - Guide
- Super copier - Télécharger - Gestion de fichiers
- Wetransfer gratuit fichiers lourd - Guide
4 réponses
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
Modifié par mamiemando le 19/02/2015 à 22:37
Modifié par mamiemando le 19/02/2015 à 22:37
scp /home/laurent/bash/vera/box2/sms-groupe_Everspring_SF812_couloir-1E_detecteur-fume.sh root@192.168.0.5
Il manque le
:à la fin de la destination. Si tu l'omets cela signifie que tu fais ta copie vers le fichier
root@192.168.0.5ce qui n'est pas ce que tu veux.
Plus généralement la syntaxe est (avec [...] qui signifie "optionnel") :
scp [-r] chemin_a chemin_b
... où un chemin est :
[[login@]machine:]chemin
Note que cette syntaxe permet donc à une machine C de faire un transfert de A à B, à un machine A d'uploader un fichier sur B, ou à une machine A de télécharger un fichier depuis B selon la manière dont tu l'invoques. Plus de détails :
man scp
Bonne chance
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 19/02/2015 à 23:37
Modifié par xunil2003 le 19/02/2015 à 23:37
Bonsoir,
Etês vous sûre, car j'ai remplacé à la fin :
par
Retour :
Il y a "0:" à la place de la destination ?
Et il ne reconnaît pas le mot de passe quand je le tape ?
Merci.
Etês vous sûre, car j'ai remplacé à la fin :
echo "scp $FICHIER_A_COPIER $SSH:$DESTINATION"
scp $FICHIER_A_COPIER $SSH:$DESTINATION
echo "DESTINATION : $DESTINATION"
par
commande="scp [-r] $FICHIER_A_COPIER $SSH:$DESTINATION:"
echo $commande
$commande
echo "DESTINATION : $DESTINATION"
Retour :
laurent@Laurent-Bureau:~$ bash /home/laurent/bash/dernier/copie-de-fichiers-d-un-pc-a-un-autre-graph.sh
+----------------------------------------------------+
| Copie de fichiers d'un ordinateur à l'autre |
| avec scp |
+----------------------------------------------------+
Ce script ne fonctionne pas, je n'arrive pas a trouver la raison ????
bash /home/laurent/bash/dernier/copie-de-fichiers-d-un-pc-a-un-autre-graph.sh
(zenity:9435): Gdk-CRITICAL **: gdk_device_ungrab: assertion 'GDK_IS_DEVICE (device)' failed
(zenity:9435): Gtk-CRITICAL **: gtk_device_grab_remove: assertion 'GDK_IS_DEVICE (device)' failed
(zenity:9435): Gdk-CRITICAL **: gdk_device_ungrab: assertion 'GDK_IS_DEVICE (device)' failed
(zenity:9435): Gtk-CRITICAL **: gtk_device_grab_remove: assertion 'GDK_IS_DEVICE (device)' failed
test : Copier un fichier de votre ordinateur vers un autre
"/home/laurent/09-off.wav" est sélectionné.
SSH : root@192.168.0.5
0
DESTINATION : /root/Bash/
0
scp [-r] /home/laurent/09-off.wav root@192.168.0.5 0:/root/Bash/ 0:
laurent@0's password:
Permission denied, please try again.
laurent@0's password:
Permission denied, please try again.
laurent@0's password:
Permission denied (publickey,password).
lost connection
DESTINATION : /root/Bash/
0
laurent@Laurent-Bureau:~$
Il y a "0:" à la place de la destination ?
scp [-r] /home/laurent/09-off.wav root@192.168.0.5 0:/root/Bash/ 0:
Et il ne reconnaît pas le mot de passe quand je le tape ?
Merci.
mamiemando
Messages postés
33654
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2025
7 847
Modifié par mamiemando le 20/02/2015 à 12:00
Modifié par mamiemando le 20/02/2015 à 12:00
Non tu n'as pas bien compris ce que j'ai voulu écrire.
A) Pré-requis :
Pour information quand tu lis un man, par exemple
Regarde par exemple
Dans le cas de
... du coup son synopsis serait :
Dans le cas de
- un chemin local continue à s'écrire "normalement"
- un chemin sur une machine distante doit comporter les informations pour faire la connexion ssh vers cette machine (donc le login et le nom de machine). Si le login est omis, c'est sous-entendu le résultat de la commande
B) Quelques exemples avec scp
Ils seront peut-être plus claire que la syntaxe avec des crochets.
1) Upload (fichier / dossier) :
Cas particulier : upload dans
Upload de plusieurs fichiers :
Upload de plusieurs répertoires :
2) Download
En gros, c'est la même chose mais dans l'autre sens.
Cas particulier : download dans le répertoire courant :
On peut aussi downloader plusieurs fichiers/dossiers.
3) Transfert (depuis ta machine, de A vers B)
J'espère que c'est plus clair.
C) Si tu es bloqué
N'hésite pas à demander des précisions en cas de besoin. Si tu es bloqué, reporte-moi la commande scp (sans les variables shells), sa valeur exacte. Pour ce faire, tu peux modifier ton script pour qu'il affiche la commande qu'il va exécuter.
Exemple :
Bonne chance
A) Pré-requis :
Pour information quand tu lis un man, par exemple
man scp, quand quelque chose est écrit entre crochet il ne faut pas les réécrire : cela signifie que ce qui est entre crochet peut être ou ne pas être écrit dans ta commande (en fonction de tes besoins). C'est notamment le cas des options.
Regarde par exemple
man ls: tu sais que tu peux écrire
ls -lou
ls -aou encore
ls -a -lou encore
ls -al. Si ls se limitait à ces deux options, son synopsis dans le man serait alors :
ls [-al] [chemin]
Dans le cas de
lstu peux même écrire plusieurs fichiers à la suite :
ls /home/toto /home/tata
... du coup son synopsis serait :
ls [-al] [chemin...]
Dans le cas de
cptu peux copier n fichiers vers 1 destination donc le synopsis ressemble à :
cp [-r] chemin_sources... chemin_destinatoin
scpsuit la même convention : tu peux copier n sources vers 1 destination, et chacun de ces paramètres peuvent correspondre à un fichier/dossier local à la machine ou sur une machine distante. La syntaxe de
scprequiert donc de pouvoir exprimer ces deux types de chemins. Ainsi :
- un chemin local continue à s'écrire "normalement"
- un chemin sur une machine distante doit comporter les informations pour faire la connexion ssh vers cette machine (donc le login et le nom de machine). Si le login est omis, c'est sous-entendu le résultat de la commande
whoami.
B) Quelques exemples avec scp
Ils seront peut-être plus claire que la syntaxe avec des crochets.
1) Upload (fichier / dossier) :
scp /home/toto/mon/fichier loginA@machineA:/chemin/sur/a
scp -r /home/toto/dossier loginA@machineA:/chemin/sur/a
Cas particulier : upload dans
/home/loginA:
scp /home/toto/mon/fichier loginA@machineA:/home/loginA
scp /home/toto/mon/fichier loginA@machineA:
Upload de plusieurs fichiers :
scp fichier1 fichier2 fichier3 loginA@machineA:/home/loginA
Upload de plusieurs répertoires :
scp -r dossier1 dossier2 dossier3 loginA@machineA:/home/loginA
2) Download
En gros, c'est la même chose mais dans l'autre sens.
scp loginA@machineA:/mon/fichier/sur/a /home/toto/mon/fichier
scp -r loginA@machineA:/mon/dossier/sur/a /home/toto/dossier
Cas particulier : download dans le répertoire courant :
scp loginA@machineA:/chemin/sur/a .
On peut aussi downloader plusieurs fichiers/dossiers.
3) Transfert (depuis ta machine, de A vers B)
scp loginA@machineA:/fichier/sur/a loginB@machineB:/fichier/sur/b
scp -r loginA@machineA:/dossier/sur/a loginB@machineB:/dossier/sur/b
J'espère que c'est plus clair.
C) Si tu es bloqué
N'hésite pas à demander des précisions en cas de besoin. Si tu es bloqué, reporte-moi la commande scp (sans les variables shells), sa valeur exacte. Pour ce faire, tu peux modifier ton script pour qu'il affiche la commande qu'il va exécuter.
Exemple :
cmd="scp -r $login_src@$machine_src:$chemin_src /home/toto"
echo $cmd
eval $cmd
Bonne chance
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 425
20 févr. 2015 à 12:10
20 févr. 2015 à 12:10
Salut,
et
Ta syntaxe n'est pas bonne, le résultat donne bien l'adresse de ton serveur, mais aussi le résultat du code retour, d'où l'erreur ;-(
SSH=`if zenity --entry \
--title="$titre" \
--text="Veuillez indiquer votre connexion ssh \nExemple : root@192.168.0.5" \
--entry-text "root@192.168.0.5"
then echo $?
else echo "Pas de nom saisi"
fi`
echo "SSH : $SSH"
et
(zenity:8209): Gtk-CRITICAL **: gtk_device_grab_remove: assertion 'GDK_IS_DEVICE (device)' failed
test : Copier un fichier de votre ordinateur vers un autre
"/home/laurent/bash/vera/box2/sms-groupe_Everspring_SF812_couloir-1E_detecteur-fume.sh" est sélectionné.
SSH : root@192.168.0.5
0
DESTINATION : /root/Bash/
0
Ta syntaxe n'est pas bonne, le résultat donne bien l'adresse de ton serveur, mais aussi le résultat du code retour, d'où l'erreur ;-(