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
J'ai modifié le code pour rassembler les 3 lignes dans une seule trame
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.
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
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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part j=$(($j + 1))- 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 suren bas à droite du message.
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
bon c'est bon pour mon problème d'espace c'était simplement les " " qui manquait autour de ma variable maintenant ca marche
Reste maintenant une autre chose :
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
comment gérer la perte du réseau?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager