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 :

[nc] Perte de connexion après fermeture client


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut [nc] Perte de connexion après fermeture client
    Bonjour,
    j'utilise un socket pour envoyer les données météo sur une tablette.
    La tablette établit une connexion via un socket puis interroge régulièrement un serveur (raspberry connecté à ma station elle même capable de répondre via quelques commandes).
    J'utilise un screen sur le serveur et lance ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /usr/bin/screen -S meteo -d -m  /bin/nc.traditional -l -p 4444 -k -c /usr/local/bin/valeurs
    L'objectif est de répondre à chaque demande sans interruption via le script valeurs que voici :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #!/bin/bash
    password_Utilisateur="xxxx"
    password_Admin="xxxx"  
    units="km/h C mm hPa "
     
    #fonction qui change temporairement les données météo se trouvant dans r2300.txt
    remplace () {
    	sed -i "0,/"$1" /{/"$1" /s#.*#""$2""#}" /usr/local/bin/r2300.txt
    }
     
    #Boucle lisant les demandes
    while read entree
    do
    # 5 paramètres envoyés
     
    cmd=$(echo "$entree"  | cut -f1 -d" ")
    v_param=$(echo "$entree"  | cut -f2 -d" ")
    reset_param=$(echo "$entree"  | cut -f3 -d" ")
    categorie=$(echo "$entree"  | cut -f4 -d" ")
    chaine_begin="$cmd"" ""$v_param"" ""$reset_param"" ""$categorie"" "
    password=${entree:${#chaine_begin}}
    valeur="$(cat /usr/local/bin/r2300.txt | grep "$v_param " | cut -f2- -d" " )" # valeurs courantes
     
    if [ "$categorie" = "_" ]; then 
    categorie="" 
    valeur="0"
    fi
     
    # réponses envoyées
      case "$cmd" in
       "g_values" ) 
    			if [ "$password" = "$password_Utilisateur" -o "$password" = "$password_Admin" ]; then
    				# attends si occupé
    				while fuser -s /dev/ttyUSB0 ; do
    				sleep 1
    				done
    				cat /usr/local/bin/r2300.txt 
    			else 
    				echo "01" 
    			fi 
    	;;
     
       "g_unites")
    			if [ "$password" = "$password_Utilisateur" -o "$password" = "$password_Admin" ]; then	   
    				# envoie des unités
    				if [ "$password" = "$password_Admin" ]; then
    				Bool_Admin="1"
    				else 
    				Bool_Admin="0"
    				fi
    				echo "$units""$Bool_Admin"
    			else
    				echo "02"
    			fi
    	;;
    	"g_delete") 
    			if [ "$password" = "$password_Admin" ]; 
    			then
    				# commandes pour effacer certaines données météo
    				D=$(sed -n 1p /usr/local/bin/r2300.txt | cut -c6-)
    				T=$(sed -n 2p /usr/local/bin/r2300.txt | cut -c6-10)
    				minmax2300 "$reset_param" /etc/open2300.conf
    				remplace "$v_param""$categorie" "$v_param""$categorie ""$valeur"
    				remplace "T""$v_param""$categorie" "T""$v_param""$categorie ""$T"
    				remplace "D""$v_param""$categorie" "D""$v_param""$categorie ""$D"
    			else
    				echo "03"
    			fi
    	;;	
     
    	*)
    	echo "03" 
    	;;
      esac
    done
    Tout n'est peut-être pas à lire mais voici ma question :
    Cela fonctionne mais quand je quitte mon application sur la tablette, le script s'arrête et la connexion est perdue.
    Voici un des messages d'erreur obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    listening on [any] 4444 ...
    192.168.0.1: inverse host lookup failed: Unknown host
    connect to [192.168.0.6] from (UNKNOWN) [192.168.0.1] 62741
    J'ai aussi eu aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read  ligne 12   read: read error: 0: Connection reset by peer
    Merci de m’éclairer.

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

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

    tu lances une application sur une tablette qui crée une connexion. Quand tu quittes l'application, cela ferme la connexion.

    Qu'est-ce qui te surprend?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Par défaut
    Cette application peut-être lancée par plusieurs tablettes, donc je souhaite que le processus (serveur) ne s'arrête pas. La communication peut effectivement s’interrompre mais pas nc.traditional qui doit rester à l'écoute et répondre à d'autres machines.
    J'ai l'impression que le petit script génère une erreur à la fermeture de l'application et donc arrête netcat ce que je ne souhaite pas.
    Merci pour vos réponses

Discussions similaires

  1. [WD17] Perte de connexion après un restore database
    Par droliprane dans le forum WinDev
    Réponses: 1
    Dernier message: 07/03/2014, 22h24
  2. [XL-2000] Perte format Date après fermeture par la macro
    Par noftal dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/08/2013, 23h05
  3. Réponses: 4
    Dernier message: 09/06/2011, 07h42
  4. [IB6.0]-Perte de connexion Client
    Par GroupeEL dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 21/03/2005, 15h43
  5. Réponses: 3
    Dernier message: 28/09/2004, 16h39

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