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 05/08/2015, à 14:09

JujuLand

[Résolu] Paramètres scp

Bonjour,

En train de peaufiner un logiciel de maintenance, j'ai quelque soucis avec scp. La commande est générée automatiquement.

Si la commande est la suivante :

alain@Gramps-JujuLand:~$ scp -p -P 22xxx "/home/alain/Mes Photos/Collioure 2014" alain@192.168.1.12:.ssh/alain
/home/alain/Mes Photos/Collioure 2014: not a regular file

alain@Gramps-JujuLand:~$ scp -p -P 22xxx "/home/alain/Mes*Photos/Collioure*2014" alain@192.168.1.12:.ssh/alain
/home/alain/Mes Photos/Collioure 2014:No such file or directory

alain@Gramps-JujuLand:~$ scp -p -P 22xxx "/home/alain/Mes\ Photos/Collioure\ 2014" alain@192.168.1.12:.ssh/alain
/home/alain/Mes Photos/Collioure 2014:No such file or directory

J'avais aussi essayé de rajouter un \ devant les espaces, mais c'est comme pour les *

Par contre, si j'ajoute l'option -r, çà passe sans problème, et çà me crée le dossier:

alain@Gramps-JujuLand:~$ scp -r -P 22xxx "/home/alain/Mes*Photos/Collioure*2014" alain@192.168.1.12:.ssh/alain

Le problème, toutefois, est que s'il y a des sous-répertoires, ils seront copiés, ce que je ne veux pas.

Quelqu'un aurait-il une solution ?

Par ailleurs, je viens de m'apercevoir que l'option -p (pas de modification de la datation des fichiers) ne semble pas fonctionner.

A+

Dernière modification par JujuLand (Le 21/09/2015, à 13:41)


Xubuntu 16.04 > Dell DM061 (2007) + Dell Inspiron 531 (2008)
Xubuntu 16.04 > Asus X51L (2009) + MSI GX723 (2009)
Xubuntu 22.04 > HP 15BA048NF (2018)

Hors ligne

#2 Le 11/08/2015, à 21:54

elburgos

Re : [Résolu] Paramètres scp

Pour la première commande c'est normal car c'est un répertoire et non un fichier il te le dit d'ailleurs : not a regular file.

Pour les deux autres, il ne trouve pas le fichier, c'est normal car ici tes * et \ changent le nom du fichier recherché  et biensur il n'existe pas ! On ne fait pas de l’échappement ou autre là !

une idée , ça marche avec cp alors pourquoi pas :

Et le joker * il le prend ?

scp -p -P 22xxx "/home/alain/Mes Photos/Collioure 2014/*" alain@192.168.1.12:.ssh/alain

Envoyé depuis mon Windows Phone

Hors ligne

#3 Le 25/08/2015, à 07:56

JujuLand

Re : [Résolu] Paramètres scp

Et le joker * il le prend ?

scp -p -P 22xxx "/home/alain/Mes Photos/Collioure 2014/*" alain@192.168.1.12:.ssh/alain

Il est probable que cette commande fonctionne, mais elle pose un autre problème, si je ne rajoute pas le nom du dossier dans la destination, il me colle tout dans .ssh/alain, ce que je ne veux pas.
Et si le dossier 'Collioure 2014' est dans la destination et qu'il n'existe pas, il y a erreur ...
Je devrais dans ce cas ouvrir une session ssh avant le scp pour créer le dossier afin d'éviter l'erreur, ce qui ne m'enchante pas.

scp -p -P 22xxx "/home/alain/Mes Photos/Collioure 2014/*" alain@192.168.1.12:.ssh/alain/Collioure*2014

Bref, çà ne me semble pas possible ... je risque de devoir utiliser l'option -r et breaker pour éviter qu'il ne fasse du récursif.

Pour l'option -p (pas de modification de la datation), fonctionne-t-elle ?

Merci
A+


Xubuntu 16.04 > Dell DM061 (2007) + Dell Inspiron 531 (2008)
Xubuntu 16.04 > Asus X51L (2009) + MSI GX723 (2009)
Xubuntu 22.04 > HP 15BA048NF (2018)

Hors ligne

#4 Le 25/08/2015, à 11:53

elburgos

Re : [Résolu] Paramètres scp

Autrement rsync c'est sympa aussi smile

Dernière modification par elburgos (Le 25/08/2015, à 11:59)


Envoyé depuis mon Windows Phone

Hors ligne

#5 Le 25/08/2015, à 12:44

elburgos

Re : [Résolu] Paramètres scp

Ça marche :  adapte, créer un script avec un alias ou un alias (je suis un bite en shell wink  )

cd "/home/alain/Mes Photos/" && find "Collioure 2014/" -maxdepth 1 -type f -print0 | xargs -0 tar cpf "Collioure 2014.tar" && cat "Collioure 2014.tar" | ssh alain@192.168.1.12 "tar xpf - -C /home/alain/" && rm "Collioure 2014.tar" 

edit : oups une typo ...

Dernière modification par elburgos (Le 25/08/2015, à 13:33)


Envoyé depuis mon Windows Phone

Hors ligne

#6 Le 25/08/2015, à 13:26

elburgos

Re : [Résolu] Paramètres scp

Tiens par exemple

copy_over_ssh.sh :

#!/bin/sh

cd $(dirname "$1")
input=$(basename "$1")
output="$2"
user=$3
ip=$4

find "$input" -maxdepth 1 -type f -print0 | xargs -0 tar cpf "$input.tar"
cat "$input.tar" | ssh $user@$ip "tar xpf - -C $output"
rm "$input.tar"

Après l'avoir rendu exécutable

./copy_over_ssh.sh "/home/alain/Mes Photos/Collioure 2014/" "home/alain/" alain 192.168.1.12

Dernière modification par elburgos (Le 25/08/2015, à 13:28)


Envoyé depuis mon Windows Phone

Hors ligne

#7 Le 25/08/2015, à 15:19

JujuLand

Re : [Résolu] Paramètres scp

ok, d'après ce que je comprend, l'astuce et de créer une archive avec le dossier père, le transférer et le décompacter ensuite coté serveur, non ?

Je n'ai pas trop de temps avant lundi, mais j'essaie çà dès que je peux.

Merci
A+


Xubuntu 16.04 > Dell DM061 (2007) + Dell Inspiron 531 (2008)
Xubuntu 16.04 > Asus X51L (2009) + MSI GX723 (2009)
Xubuntu 22.04 > HP 15BA048NF (2018)

Hors ligne

#8 Le 20/09/2015, à 14:16

JujuLand

Re : [Résolu] Paramètres scp

elBurgos a écrit :

Et le joker * il le prend ?

    scp -p -P 22xxx "/home/alain/Mes Photos/Collioure 2014/*" alain@192.168.1.12:.ssh/alain

Non, scp n'aime pas les joker

JujuLand a écrit :

ok, d'après ce que je comprend, l'astuce est de créer une archive avec le dossier père, le transférer et le décompacter ensuite coté serveur, non ?

Bon, comme je ne veux pas systématiquement faire de session ssh en plus du scp, j'ai contourné le problème en ajoutant les noms des fichiers dans une boucle avant de faire le scp.
J'ai toujours le problème du dossier père qui n'est pas créé sur le distant, mais, bon ... je fais avec ...

A+


Xubuntu 16.04 > Dell DM061 (2007) + Dell Inspiron 531 (2008)
Xubuntu 16.04 > Asus X51L (2009) + MSI GX723 (2009)
Xubuntu 22.04 > HP 15BA048NF (2018)

Hors ligne

#9 Le 20/09/2015, à 16:38

elburgos

Re : [Résolu] Paramètres scp

je ne comprends pas ton problème ... la méthode au dessus fait exactement ce que tu veux, qu'avec une seule connexion (ssh et n'utilise pas scp), crée les dossiers voulus et garde les droits.


Envoyé depuis mon Windows Phone

Hors ligne

#10 Le 20/09/2015, à 19:55

JujuLand

Re : [Résolu] Paramètres scp

Bon, j'ai essayé, et c'est nickel.
J'ai juste modifié pour pouvoir spécifier le port

#!/bin/sh

cd $(dirname "$1")
input=$(basename "$1")
output="$2"
user=$3
ip=$4
port=$5

find "$input" -maxdepth 1 -type f -print0 | xargs -0 tar cpf "$input.tar"
cat "$input.tar" | ssh -p $port $user@$ip "tar xpf - -C $output"
rm "$input.tar"

PS: Je vais probablement ouvrir un nouveau thread, pour pouvoir utiliser vnc et ssh (probablement en remplacement de teamviewer)
J'ai vu les threads suivants:

https://forum.ubuntu-fr.org/viewtopic.php?pid=20365351
http://askubuntu.com/questions/304017/h … hrough-ssh
https://doc.ubuntu-fr.org/x11vnc

Mais je n'ai pas encore fait de tentative, et certainement pas tout compris.

Tout ce que je fais là fait partie d'un outil global de maintenance qui permet :
- cnx ssh
- scp
- cnx teamviewer
- sshfs
- cnx vnc avec ssh

Il me reste juste le dernier point à faire.
Je veux donc, comme pour les autres fonctions, à partir d'une base de donnée, choisir la machine, et me connecter en vnc avec ssh. Et donc, en ligne de commande si possible, sans passer par une interface graphique comme remmina (çà serait chouette si remmina acceptait des paramètres) ou comme teamviewer.
De plus, çà doit pouvoir attaquer des machines sous Ubuntu, mais aussi sous Xubuntu.
Bref, choisir la machine, et que çà se connecte ...

Merci
A+


Xubuntu 16.04 > Dell DM061 (2007) + Dell Inspiron 531 (2008)
Xubuntu 16.04 > Asus X51L (2009) + MSI GX723 (2009)
Xubuntu 22.04 > HP 15BA048NF (2018)

Hors ligne

#11 Le 15/11/2015, à 20:30

JujuLand

Re : [Résolu] Paramètres scp

Bon, une petite correction du script pour pouvoir être utilisé avec des noms comportant des espaces

#!/bin/sh

chemin=$(dirname "$1")
cd "$chemin"
input=$(basename "$1")
output="$2"
user=$3
ip=$4
port=$5

find "$input" -maxdepth 1 -type f -print0 | xargs -0 tar cpf "$HOME/$input.tar"
cat "$HOME/$input.tar" | ssh -p $port $user@$ip "tar xpf - -C $output"
rm "$HOME/$input.tar"

Je n'ai pas trouvé d'autre solutions que de renommer le dossier racine ce ce qu'on veut copier, puis de le renommer une fois la copie exécutée.

Exemple:
/user/alain/home/Images/Vacances 2015/Au bord de mer
sera renommé
/user/alain/home/Images/Vacances 2015/Au_bord_de_mer
ensuite copie
et enfin renommage comme avant copie.

Seul inconvénient, le dossier target n'a pas le nom original, mais c'est vraiment mineur comme défaut, faut simplement le savoir.

A+

Dernière modification par JujuLand (Le 15/11/2015, à 20:32)


Xubuntu 16.04 > Dell DM061 (2007) + Dell Inspiron 531 (2008)
Xubuntu 16.04 > Asus X51L (2009) + MSI GX723 (2009)
Xubuntu 22.04 > HP 15BA048NF (2018)

Hors ligne