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 :

Netcat : Problème de compréhension ?


Sujet :

Shell et commandes GNU

  1. #21
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 733
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 733
    Par défaut
    1 (client) on enregistre tout ce qui arrive par le port de reception dans fichier.log
    2 (client) on envoie une commande, par exemple 'ls'
    3 (serveur) on reçoit ce qui arrive (ici 'ls'), on traite, et on redirige vers le port de sortie
    4 (client) la sortie de 'ls' arrive dans fichier.log
    5 (client) on affiche fichier.log
    c'est bien ça.

    il faut démarrer le client avant le serveur : il faut qu'il écoute avant que le serveur envoie des données.

  2. #22
    Membre confirmé Avatar de nanooby
    Homme Profil pro
    IT Consultant
    Inscrit en
    Mai 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : IT Consultant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2014
    Messages : 103
    Par défaut
    @N_BaH :

    -l Used to specify that nc should listen for an incoming connection
    rather than initiate a connection to a remote host. It is an
    error to use this option in conjunction with the -p, -s, or -z
    options. Additionally, any timeouts specified with the -w option
    are ignored.


    -p source_port
    Specifies the source port nc should use, subject to privilege
    restrictions and availability. It is an error to use this option
    in conjunction with the -l option.
    Pourquoi utilises tu ces deux options ensemble si le man le déconseille? (Question de pure curiosité)

  3. #23
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 733
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 733
    Par défaut
    je n'ai pas cette mise en garde dans la page man sur Debian.

  4. #24
    Membre confirmé Avatar de nanooby
    Homme Profil pro
    IT Consultant
    Inscrit en
    Mai 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : IT Consultant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2014
    Messages : 103
    Par défaut
    J'ai utilisé le man cygwin (car pas présent sur le serveur où je bosse actuellement) et google : http://www.manpagez.com/man/1/nc/

    Le deux disent la même chose. Mais je ne comprend justement pas qu'utiliser ces deux options ensemble soit déconseillé.

  5. #25
    Membre confirmé Avatar de nanooby
    Homme Profil pro
    IT Consultant
    Inscrit en
    Mai 2014
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : IT Consultant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2014
    Messages : 103
    Par défaut
    Au final teunniq, as tu essayé d'autres ports?

  6. #26
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 15
    Par défaut
    Salut,

    Oui j'ai essayé d'autres ports, le souci ne vient pas de là.
    N_Bah, je n'ai pas réussi à faire fonctionner ta solution.
    Du coup je suis reparti sur ma première piste, avec le pipe.

    Je lance mon serveur avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nc -l -p $1 0<pipe | ./serveur2 1>pipe
    Côté client,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    nc -w 1 $ip $port << stop
     
    #pour le mode list
    list
    stop
     
    #pour le mode download
    download $archive
    stop
    Et mon fichier serveur2 qui interprète les commandes :

    Code serveur2 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    while read ligne
    do
        echo "[DEBUG] ligne = $ligne"
     
    # MODE LISTING
        if [[ $ligne == "list" ]]; then
            echo "----------------------------"
            echo "> Fichiers sur le serveur : "
            ls
            echo "----------------------------"
            echo "> Retour au menu ... "
     
    # MODE DOWNLOAD
        elif echo $ligne  | egrep -q '^download\ [a-zA-Z0-9\.\-]+$'; then
        	fichier=$(echo $ligne | sed -nE 's/^(download)\ ([a-zA-Z0-9\.\-]+)$/\2/p')
        	echo "> Recherche du fichier $fichier"
        	if [ -e $fichier ]; then
        		echo "> Le fichier $fichier a été trouvé"
                    # Comment faire pour transférer mon fichier du côté client ? je bloque...
        	else
        		echo "> Le fichier $fichier est inexistant"
     
        	fi
        fi
    done

    Le souci : le mode list marche, mais pour le mode download, une fois que le fichier a été trouvée, je ne trouve pas de moyen pour le transférer du côté client.... je bloque totalement!! Comment je pourrai faire, par exemple à l'aide d'un "cat $fichier > fichier_telecharge.txt", pour rediriger la sortie vers le client et non vers le serveur ?

    Bon week-end

  7. #27
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    J'ai pas tout lu, mais j'ai quelques remarques

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elif echo $ligne  | egrep -q '^download\ [a-zA-Z0-9\.\-]+$'; then
    => Profiter de la puissance de Bash (quand on peux se le permettre).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elif [[ $ligne =~ '^download\ [a-zA-Z0-9\.\-]+$' ]]; then
    Ensuite :

    Mieux vaut utiliser read -r pour éviter d'interpréter les séquences d'échappement.

    Enfin pour répondre à votre question, je ne suis pas coutumier de nc mais (à partir du moment ou c'est le seul outil que tu ait le droit d'utiliser) peut être simplement afficher le contenu du fichier pour le capturer de l'autre côté (en utilisant un outil comme hexdump s'il s'agit de véhiculer des fichiers binaires) ? Après ça pose le problème de distinguer les traces et le contenu du fichier à l'arrivée mais pour avoir déjà fait ce genre de choses via des sockets TCP/IPC ou UDP mais avec d'autres technos (Java et C POSIX/Gtk notamment), j'envoyais des paquets avec des entêtes distinctes qui me permettait à l'arrivée de savoir si c'était un message à afficher sur l'IHM ou si c'était un morceau de fichier téléchargé. Tu peux imaginer une telle structure.

    Sinon il existe d'autres outils : scp, wget, curl, telnet, ftp, etc

    Cordialement,
    Idriss

Discussions similaires

  1. [Débutant] problème de compréhension
    Par Sylvester dans le forum Général Java
    Réponses: 18
    Dernier message: 21/07/2005, 10h16
  2. Réponses: 5
    Dernier message: 11/04/2005, 11h21
  3. [C#] Problème de compréhension de System.Convert ET Provider
    Par papouAlain dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/11/2004, 22h52
  4. onclipevent (problème de compréhension)
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 24/09/2003, 16h09
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 23h07

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