IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Mapper un lecteur et récupérer des fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Invité
    Invité(e)
    Par défaut Mapper un lecteur et récupérer des fichiers
    Bonjour,

    Je démarre dans le shell.

    J'ai besoin de mapper un lecteur réseau et de copier / coller des fichiers d'un serveur à un autre

    J'ai regardé sur le net des exemples mais je ne comprends pas certains paramètres, j'aimerai avoir votre avis, svp,

    voici ce que je prévois de faire:

    net use M: \\adresse_IP\c$ /yes /user:LOGIN MDP, 1

    scp LOGIN_SERVER_1@adresse_IP_SERVER_1:c:\chemin_complet\nom_des_fichiers_*.txt LOGIN_SERVEUR_2@adresse_IP_SERVER_2:/partage/

    A quoi sert le /yes et le 1 pour mapper le lecteur svp?
    Pour la forme du scp je pense que c'est bon.. l'idée est de copier tous les fichiers d'un répertoire d'un serveur lamda vers un répertoire d'un serveur alpha..

    merci d'avance pour votre aide
    Dernière modification par Invité ; 18/06/2015 à 18h26.

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    je crois que tu mélanges un certain nombre de choses, scp est un client qui nécessite de l'autre coté un serveur ssh, en général ça veut dire que la machine en face est un linux, par contre la machine cliente (sur laquelle on lance la commande) peut être un linux ou un windows pour peu qu'on ait installé la suite putty par exemple

    net use est une commande issue du monde windows et ne fonctionnera pas sous linux, par ailleurs si on cherche à mapper un lecteur, ça veut dire que la machine en face (serveur) est un windows ou un linux avec un serveur samba, par contre on peut accéder à un lecteur partagé depuis linux, mais pas avec net use et encore moins avec scp (ce n'est pas le même protocole)

    la première des questions qui se pose c'est entre quelles machines tu cherches à effectuer un transfert de fichiers ?

    edit: le ,1 je vois pas ce que c'est, le /YES en revanche c'est marqué dans l'aide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C:\>net help use
    (...)
    YES                Enregistre les connexions lorsqu’elles sont établies et les
                       restaure lors de la prochaine ouverture de session.

  3. #3
    Invité
    Invité(e)
    Par défaut Shell
    Merci pour votre réponse, il n'est jamais trop tard pour apprendre.

    je crois que je dois arrêter de penser windows...
    Dernière modification par Invité ; 18/06/2015 à 19h37.

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    • sur quelle machine tu lances la commande, windows ou centos ?
    • où sont les fichiers à copier, sur windows ou sur centos ?

  5. #5
    Invité
    Invité(e)
    Par défaut shell
    je veux bosser sur CentOS.

    Les fichiers sont sur des serveurs windows et je veux rapatrier des logues sur mon CentOS

    j'ai trouvé un script qui me parait bien avec une boucle FOR, un GREP et un SCP, j'essaie de la comprendre

    for i in SRVWIN1 SRVWIN2
    do
    for j in `ssh TOTO@$i "ls /tmp/Log | grep TIQUE_TRP*"`
    do
    scp TOTO@$i:/tmp/Log/$j /partage/fichier/$i/$j ;
    done
    done


    Si je comprends bien le script.. je crée une étiquette SRVWIN1 puis SRVWIN2 (qui correspondent à mes serveurs windows
    ensuite, je me connecte avec ssh, le compte du serveur Windows sur i (qui corresponds à mes différents serveurs) et je fais une recherche dans /tmp/log de tous les fichiers qui commencent par le nom TIQUE_TRP et tout ce qu'il y a après.
    Puis enfin je copie avec scp tous les fchiers dans /partage/fichier

    L'opération se renouvelle jusqu'à SRVWIN2 grace à j après le for

    J'ai juste ou j'ai mal compris qqc? SVP
    Dernière modification par Invité ; 18/06/2015 à 19h37.

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par COS94 Voir le message
    je veux bosser sur CentOS.
    Les fichiers sont sur des serveurs windows et je veux rapatrier des logues sur mon CentOS
    donc tu veux une commande linux pour te mapper un lecteur réseau sous windows, le code que tu as trouvé lance des ssh dans une boucle, si tu n'as pas plusieurs serveurs avec sshd qui tourne sur chacun d'eux il ne te sert à rien

    tu devrais regarder du coté du paquet samba-client c'est ce qu'il te faut.

    http://wiki.centos.org/fr/TipsAndTricks/WindowsShares
    http://www.delafond.org/traducmanfr/...bclient.1.html

  7. #7
    Invité
    Invité(e)
    Par défaut Shell
    Si j'ai une dizaine de serveurs windows sur lesquels je dois récupérer des logues.
    Mon idee de mapper des lecteurs vient de mon héritage windows...,,
    Je crois que je n'ai pas besoin de faire ca.
    Je vais virtualiser ce soir et voir si mon script fonctionne

  8. #8
    Invité
    Invité(e)
    Par défaut shell
    bon mes tests et ben ca marche pas

    et là, en trouvant un script sur mon CentOS, je viens de comprendre qu'il y a des points de montage qui pointent sur mes serveurs windows

    Je revois mon script, je pense que du coup l'idée de se connecter à distance sur des serveurs windows est inutile est peut être impossible, d'ou l’intérêt d'utiliser Samba et les points de montages..

    je n'arrive pas à aller dans le point de montage et ressortir la liste des logues qui m'intéresse

    si je vais manuellement sur le point de montage et que je lance la commande ls TOTO/trace | grep mes_fichiers_ ca fonctionne

    mais dans mon script sur CentOS ca ne marche pas. Je m'y prends mal c'est sur et j'aimerai avoir de l'aide, svp. Je veux aller dans mon point de montage et faire ma commande, j'essaie avec ca:

    for i in SRVWIN1 SRVWIN2
    do
    for j in `$i "ls TOTO/trace | grep mes_fichiers_"`
    do

    ensuite je veux récupérer les fichiers et les envoyer toujours sur mon CentOS dans un répertoire de partage/MES_LOGS


    scp $i:TOTO/trace $j /partage/MES_LOGS/$i/$j ;
    done
    done

    Tout ce fait en local sur CentOS quelqu'un peut m'aider svp?

    `
    Dernière modification par Invité ; 19/06/2015 à 17h04.

  9. #9
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    La commande scp est faite pour copier des fichiers vers/depuis un serveur SFTP (en quelque sorte une sorte de FTP qui passe par SSH ), ce qui n'a rien à voir avec les partages réseaux de Microsoft, qui s'appuient sur le protocole Samba.

    Pour "mapper" (on appelle ça "monter" dans le jargon UNIXien) un lecteur réseau (autrement dit un partage SMB) tu peux utiliser la commande "mount" qui permet de voir ton partage distant dans un dossier de ton application. Néanmoins cette commande requiert les droits root, il faut donc soit lancer le script en root (très déconseillé), soit appeler su/sudo sur cette commande; la commande en question étant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mount -t cifs \\\\Serveur\\Partage /dossier/de/destination
    . (la commande "man mount.cifs" te renseignera sur les paramètres optionels de la commande, comme les informations d'authentification). Il ne faudra pas oublier de démonter ton répertoire "umount /dossier/de/destination" (lui aussi à lancer en root ).

    Sinon tu peux regarder du côté de smbclient si t'as pas envie de t'encombrer des droits root.

  10. #10
    Invité
    Invité(e)
    Par défaut Shell
    Pour résumer et conclure je voulais donc récupérer sur mon CentOS des logs stockées sur des serveurs windows et linux à la fois. J'avais des points de montages que j'ai découvert au fur et à mesure de mes recherches et elles pointaient sur des serveurs windows que je visais. En réalisant le script ci-dessous j'ai pu accomplir ce que je voulais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash
    cd /mnt
     
    dater=`date +%Y_%m_%d-%T`
     
    for i in SRV1 SRV2 SRV3 SRV4 SRV5
    do
    mkdir -p /partage/nom_du_repertoire/$i/$dater/
            for j in `ls /mnt/$i/LOG | grep mes_noms_de_fichiers_log_`
            do
            cp /mnt/$i/LOG/$j /partage/nom_du_repertoire/$i/$dater/$j ;
            done
    done
    Dernière modification par al1_24 ; 24/06/2015 à 16h20. Motif: Balises CODE

  11. #11
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    Bonjour

    On n'utilise pas ls dans un script.

    Les Windowsiens ont la fâcheuse tendance à mettre des espaces dans les noms de fichiers contre lesquels tu ne t'es pas protégé.

    Sans compter que "mes_noms_de_fichiers_log_" est une chaîne de caractère et non un fichier qui liste les noms de fichiers log.

  12. #12
    Invité
    Invité(e)
    Par défaut shell
    bonjour flo,

    Merci pour votre réponse.

    Je suis toujours preneur pour m'améliorer. Comment je fais avec mon ls et grep infiné?

    Sinon, pour le résultat attendu c'est bon je l'ai.

    cdt

  13. #13
    Membre Expert
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 581
    Par défaut
    Citation Envoyé par COS94 Voir le message
    Je suis toujours preneur pour m'améliorer. Comment je fais avec mon ls et grep infiné?
    Bonjour, voir par exemple le tutoriel ci-dessous :

    http://ineumann.developpez.com/tutor...pratiques/#LII
    Quelques bonnes pratiques dans l'écriture de scripts Bash
    II. Boucler sur une sortie de commande
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

    Liste des balises BB

  14. #14
    Invité
    Invité(e)
    Par défaut shell
    J'ai lu le tuto, je vois du ls dans les scripts, ca m'a bien l'air aussi utilisé un peu partout.. Flodelarab ne recommande pas l'usage du ls.. un petit éclaircissement sur vos recommandations à ce sujet s'imposerait Flo..si vous avez le temps de répondre.

    Merci pour tout à toutes et à tous.

  15. #15
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    Tu n'es pas sûr de la sortie d'un "ls". On utilise "find". Avec son cortège d'options. Qui t'éviterait de faire un "grep" après, d'ailleurs.

  16. #16
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    on évite d'utiliser ls parceque son affichage peut varier d'une machine à une autre, c'est ce qui se dit -et c'est vrai- d'un autre coté c'est aussi le cas pour tout un tas d'autres commandes à commencer par ps ou netstat alors bon...

    le fait est que ton code peut certainement être amélioré, ne serait-ce qu'en utilisant $() au lieu de `` pour la substitution de processus, et la 2e boucle for peut surement être éliminée également grâce au globing de bash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    dater=$(date +%Y_%m_%d-%T)
    for i in SRV1 SRV2 SRV3 SRV4 SRV5
    do
       mkdir -p /partage/nom_du_repertoire/$i/$dater/
       cp /mnt/$i/LOG/*mes_noms_de_fichiers_log_* /partage/nom_du_repertoire/$i/$dater/ ;
    done

  17. #17
    Invité
    Invité(e)
    Par défaut Shell
    Merci infiniment!
    bonne fin de journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FTP] Récupérer des fichiers
    Par jeruzalem dans le forum WinDev
    Réponses: 20
    Dernier message: 09/10/2007, 17h21
  2. Réponses: 10
    Dernier message: 18/07/2007, 20h02
  3. [C#.NET 2.0] récupérer des fichiers par http
    Par cortex024 dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 21/02/2007, 17h26
  4. Réponses: 2
    Dernier message: 05/10/2006, 15h58
  5. Récupérer des fichier
    Par j2zetka dans le forum Applets
    Réponses: 6
    Dernier message: 16/11/2004, 17h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo