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 :

Port en écoute et détection erreur réseau


Sujet :

Shell et commandes GNU

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

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Florent42 Voir le message
    le read -t1 ne marche pas
    t'as essayé avec un espace entre -t et 1 ?

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    idem le -t ou le -t 1 ou encore le -t1 ne marche pas

    des que je supprime cette option j'ai bien la trame découpée qui arrive

  3. #23
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    J'ai modifié le code pour rassembler les 3 lignes dans une seule trame

    Code : 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
    26
    27
    28
    29
     
    #!/bin/bash
     
    host='xxx.xxx.xxx.xxx'
    port='xxxx'
    i=0
    j=0
     
    while true; do
       nc -w3 $host $port | while read line; do
            if [ $j -eq 0 ]
            then
            echo "Trame$i"
            fi
            if [ $j -lt 4 ]
            then
             echo ${line}
            partiel[$j]=${line}
            j=$(($j + 1))
            fi
            if [ $j -eq 3 ]
            then
             i=$(($i + 1))
            trame=$partiel[0]$partiel[1]$partiel[2]
            echo $trame
             j=0
            fi
       done
    done
    Le récupère bien mes 3 lignes par contre la concaténation ne marche pas, j'ai toujours seulement la 1ere ligne qui apparait.
    Plus génant : J'ai des espaces entre les chiffres qui apparaissent et j'ai l'impression qu ils sont changés par rapport a ce que le serveur envoi. En gros j'ai l'impression que Netcat supprime de lui meme des espaces vides...mais pour moi ces espaces définissent des valeurs vides mais bien présentes qd meme

  4. #24
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Je comprends rien à ce que tu trafiques. Tu te compliques la vie.

    De plus,
    • faire une boucle infinie n'est pas génial.
    • Ton read ferait bien d'avoir l'option -r si tu ne veux pas avoir un résultat défiguré dès que la trame contient une contre-oblique "\".
    • Nombreuses sont les commandes qui suppriment les espaces; comme echo, par exemple; surtout si tu ne protèges pas tes variables.
    • La conduite crée un sous-processus chaque fois qu'elle est lancée.
      La commande suivante n'a donc aucun effet durable.
      C'est évidemment pareil pour $i ou partiel[ ], détruits dès la sortie de la bulle du sous-processus.
    • Connais-tu les substitutions de processus <( ) ?
      Voici un exemple utile pour toi :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      while IFS='' read -r ligne
      do 
       
      done < <(nc -w3 $host $port)
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #25
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    hello

    La trame n'aura jamais de caractères spéciaux de type "\". Il n y aura que des caractères alphanumérique classiques.

    La variable j ne sert qu a compter le nombre de ligne que je recois
    Vu que je me suis apercu que la trame contenait toujours 3 lignes, j'attends la 3eme ligne pour considérer que la trame est finie. Après j revient a 0. cette variable n'a pas vocation a être durable mais simplement etre sur que la trame est complète.

    La finalité de partielle est identique, aucune vocdation a etre conservée durablement.
    La partie pour l'instant que je n'ai pas intégré dans le script reste l'intégration dans la BDD mais d'autres choses sont a contrôler avant.

    Je ne connais pas spécialement, néanmoins par rapport a ton exemple après l'avoir fait, j'ai du mal a voir la différence?

    bon rapport a mon problème "je récupère bien mes 3 lignes par contre la concaténation ne marche pas, j'ai toujours seulement la 1ere ligne qui apparait."
    => trouvé en fait c'etait plus un problème d'affichage sur prompt qu'autre chose puisque si j'envoi la variable dans un fichier, la tout est complet

    Par contre j'ai toujours mon problème qu'initialement j'avais des espaces qui sont supprimés

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    bon c'est bon pour mon problème d'espace c'était simplement les " " qui manquait autour de ma variable maintenant ca marche

    Code : 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
    26
    i=0
    j=0
    IFS=""
     
    while true; do
       while read -r line; do
            if [ $j -eq 0 ]
            then
            echo "Trame $i"
            fi
            if [ $j -lt 4 ]
            then
             echo "${line}"
            partiel[$j]=$line
            j=$(($j + 1))
            fi
            if [ $j -eq 3 ]
            then
             i=$(($i + 1))
            trame="${partiel[0]} ${partiel[1]} ${partiel[2]}"
            origine=$(echo ${trame} | cut -c2-3)
            mysql -uuser -pmdp -e "INSERT INTO jou.t VALUES ('', '${trame}','$origine','');"
             j=0
            fi
       done < <(nc -w3 $host $port)
    done
    Reste maintenant une autre chose :
    comment gérer la perte du réseau?

Discussions similaires

  1. [Postfix] Changer le port d'écoute
    Par java_fun dans le forum Administration système
    Réponses: 5
    Dernier message: 08/06/2007, 13h05
  2. Erreur réseau générale.
    Par tribune dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/05/2007, 10h38
  3. Erreur réseau ou erreur disque
    Par lingli dans le forum Bases de données
    Réponses: 9
    Dernier message: 16/05/2006, 23h27
  4. [8.i][Admin]Imposer un port d'écoute
    Par ni0urk dans le forum Oracle
    Réponses: 16
    Dernier message: 17/11/2005, 11h56
  5. Réponses: 13
    Dernier message: 11/10/2004, 10h54

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