Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 20/10/2009, à 22:34

Goda

stdout vide...et ça me chagrine !(script de test proxys) [RESOLU]

Salut

Je gallère un peu... Je suis en train d'écrire un script dans lequel j'utilise une commande dans une boucle "for" qui teste une liste de proxys pour voir si ils sont anonymes ou pas. Mais parfois le proxy ne fonctionne pas et la réponse n'est ni oui ni non du coup stdout est vide et ça crée un décalage dans le fichier texte résultant de tout ca.

exemple (içi le proxy2 ne fonctionne pas) :

Je devrais avoir ça :

proxy1  Anonyme
proxy2
proxy3 pas-anonyme

au lieu de quoi j'ai ça :

proxy1  Anonyme
proxy2  pas-anonyme
proxy3

Pour palier au problème j'ai essayé de forcer l'écriture d'un caractère "_" en fin de ligne en pipant un sed :

ma-commande|sed 's/$/_/' >> fichier.txt

dans le but d'obtenir ça :

proxy1  Anonyme_
proxy2 _
proxy3 pas-anonyme_

Mais ça ne marche pas car si stdout est vide mon sed se perd dans la nature...
Bref la je calle alors si quelqu'un a une idée je suis preneur.

Dernière modification par Goda (Le 22/10/2009, à 18:04)


" Read The F$$$$$ Manual "      --->  man man

Pensez à passer en RÉSOLU...(en éditant le titre du 1er message)

Hors ligne

#2 Le 20/10/2009, à 23:41

AnsuzPeorth

Re : stdout vide...et ça me chagrine !(script de test proxys) [RESOLU]

Bjr,
Cela dépends de ce que contient 'ma-commande' ....
Si elle retourne 0 ou 1, tu peux utiliser && et || .
Si elle retourne une valeur, peut être serait-il mieux de passer par une variable et tester cette variable !

C'est marrant, j'avais commencé un truc du genre y'a qqle temps, et j'ai laisser tomber pour l'instant (le proxyjudge ne donne pas de bon résultats je trouve, et j'ai pas vraiment creuser).
J'en été arrivé là, peut être que cela te servira ! (ca fonctionne, mais pas encore comme je le souhaitais, on dira script en construction smile)

#!/bin/bash
LIST_PROXY1="71.239.10.159:8085
71.205.182.69:8085
24.186.253.147:8085
79.133.165.17:3128
74.56.140.165:8085
70.118.61.60:8085
24.164.17.124:8085
202.239.242.75:8080
87.106.179.240:3128
67.87.84.109:8085
24.44.68.213:8085
68.14.164.39:8085
77.91.226.155:3128
68.184.132.225:8085
71.227.242.212:8085
200.93.206.210:8080
212.102.0.104:8080
88.86.102.195:8080
76.110.244.146:8085
68.231.172.18:8085
65.188.182.97:8085
76.187.229.90:8085
70.173.111.115:8085"
export GUI='<window>
<vbox>
<tree rules_hint="true">
	<variable>tr</variable>
	<label>IP|Anon|Ping|Connect|Result|Host|Comment</label>
	<input>cat resultat.txt</input>
  </tree>
  </vbox>
	<action signal="focus-in-event" type="refresh">tr</action>
 </window>'
 gtkdialog --program=GUI &
n=0
while read ligne
do
(
PING=$(ping -c 2 $(cut -d ":" -f1 <<< $ligne) | sed -n '2p' | awk -F"=" '{print $NF}')
PROXY=$(curl -s --connect-timeout 5 --retry 2 -f -m 5 -x $(awk '{print $1}' <<< $ligne) "http://picks-gold.com/ip.cgi?en" 2>&1 | grep -v "%" | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' -e '/^$/d')
REMOTE_HOST=$(grep "REMOTE_HOST=" <<< "$PROXY" | cut -d "=" -f2)
REMOTE_ADDR=$(grep "REMOTE_ADDR=" <<< "$PROXY" | cut -d "=" -f2)
HTTP_CONNECTION=$(grep "HTTP_CONNECTION=" <<< "$PROXY" | cut -d "=" -f2)
RESULT=$(grep "Result" <<< "$PROXY" | sed 's/Result//')
COMMENT=$(grep "Comment" <<< "$PROXY" | sed 's/Comment//')
ANON=$(grep "AnonyLevel" <<< "$PROXY" | sed 's/AnonyLevel \: //')
#echo "$PROXY"
[ -n "$REMOTE_HOST" ] && echo "$ligne|$ANON|$PING|$HTTP_CONNECTION|"$RESULT"|$REMOTE_HOST|"$COMMENT | tee -a resultat.txt
export n=$((n-1))
) &
#ce qui suit devra lancer 5 test puis attendre, j'en suis là, pas continué, ce qui suit n'est pas encore operationnel !
n=$((n+1))
if [ "$n" = 5 ]; then
sleep 2
n=0
fi

done <<< "$LIST_PROXY1"
exit

Le refresh de la liste dans la GUI se fait au focus de celle ci, donc en cliquant simplement sur la barre de fenetre.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 21/10/2009, à 21:03

Goda

Re : stdout vide...et ça me chagrine !(script de test proxys) [RESOLU]

Merci de t'interesser a mon problème. La j'ai pas le temps de m'en occuper mais je reviendrais poster l'état d'avancement du truc...


" Read The F$$$$$ Manual "      --->  man man

Pensez à passer en RÉSOLU...(en éditant le titre du 1er message)

Hors ligne

#4 Le 22/10/2009, à 18:00

Goda

Re : stdout vide...et ça me chagrine !(script de test proxys) [RESOLU]

Yep !

Bon finalement je me suis dépatouilé tout seul...ça commence a rentrer le shell !
J'ai tout bêtement imbriqué une déclaration de variable dans ma boucle puis je la teste...

Pour info voiçi mon script :

#!/bin/bash

########################################################################
#                                                                      #
#                          PROXYLISTER                                 #
#                                                                      #
#           Crée une liste de proxys anonymes fonctionnels             #
#                                                                      #
#                               :-)                                    #
#                                                                      #
########################################################################
#
# écrit le 20/10/2009 par Goda
#
#
#
#DEBUT
#
#
#
#
#Change les couleurs en fond bleu écriture blanche
echo -e "\033[44;37m";
clear;
#
#
#
#
echo "   ########################################################################"
echo "   #                                                                      #"
echo "   #                           PROXYLISTER                                #"
echo "   #           Crée une liste de proxys anonymes et les teste             #"
echo "   #                                                                      #"
echo "   #                               :-)                                    #"
echo "   #                                                                      #"
echo "   ########################################################################"
#
#
#
#
#récupération de l'IP actuelle :
IP=`w3m -dump http://www.libellules.ch/ip.php|awk -F: '/^Adresse/ {print $2}'|sed 's/\s//'`
echo "   ";
echo "   ";
echo "   l'IP actuelle est $IP";
echo "   ";
echo "   ";
  if [ $IP = "" ]
        then
	echo "   ";
    echo "   ";
    echo "   Vous n'êtes pas connecté a Internet";
	echo "   ";
    echo "   ";
	exit 0;
else
    :;
	fi
#
#
#
#
# Demande du nom de la liste à traiter :
read -p "   Quel est le fichier contenant la liste de proxys à tester ?   :  " LIST;
#
#
#
#
#
#Trie et clarifie la liste de proxys dans une nouvelle liste nommée "proxylist.txt (dans /tmp)"

if [ -e $LIST ]
    then
:;
    else
echo "   ";
echo "   ";
echo "   La liste de proxys nommée $LIST semble ne pas exister";
echo "   ";
echo "   ";
sleep 5;
echo -e "\033[00m";
clear;
exit 1;
fi;

cat $LIST|cut -c 1-20|tr -d a-z,A-Z|sed 's/\s\+$//;s/\ /\:/g;s/[ \t]//g;/^$/d' > /tmp/proxylist.txt;

echo "   ";
echo "   ";
echo "   Liste de proxys triée et clarifiée !";
echo "   ";
echo "   ";
#
#
#
#
#Lance prxchecker dans un sous shell avec "/tmp/proxylist.txt" en entrée et la liste de proxy fonctionnants "/tmp/working-proxys.txt" en sortie:
echo "   ";
echo "   ";
echo "   Proxylister est en train de tester les proxys de la liste avec Prxchecker...Patientez";
echo "   ";
echo "   ";
(
cd $HOME/chemin/de/prxchecker

./prxchecker -f /tmp/proxylist.txt -o /tmp/working-proxys.txt
)
#
#
#
#
#Pour tester l'annonymat :
echo "   ";
echo "   ";
echo "   Proxylister va maintenant tester si les proxys sont réellement annonymes...Patientez";
echo "   ";
echo "   ";

for file in `cat /tmp/working-proxys.txt`; 
    do echo "  Teste $file"; 
	(
	ANS=`curl --connect-timeout 5 -m 25 --fail -x $file www.tux-planet.fr/public/hack/proxy/check-anonymous.php?myip=$IP`
	if  [ ANS = "Not anonymous" ] || [ ANS = "Anonymous" ]
	    then
	echo "---> $ANS" >> /tmp/annonymous.txt;
	    else
	echo "Not responding" >> /tmp/annonymous.txt;
	fi;
	)	    
		done;
#
#
# 
#Met tout au propre :
paste -d ' ' /tmp/working-proxys.txt /tmp/annonymous.txt > $HOME/Bureau/liste_de_proxys.txt
rm -f /tmp/working-proxys.txt /tmp/annonymous.txt /tmp/proxylist.txt

echo "   ########################################################################"
echo "   #                                                                      #"
echo "   #         PROXYLISTER viens de constituer une liste de proxys          #"
echo "   #        fonctionnels  anonymes...elle se trouve sur le Bureau         #"
echo "   #                                                                      #"
echo "   #                               :-)                                    #"
echo "   #                                                                      #"
echo "   ########################################################################"
#
#
#	
#Remet les couleurs par défaut et quitte
echo "   ";
echo "   ";
read -p "   Appuyez sur Entrée pour quitter" QUIT ;
echo -e "\033[00m";
clear;
exit 0;
	
#FIN

Comme tu le vois je fait en fait appel a un script en C qui n'est pas de moi : prxchecker
Il est dispo içi : www.tux-planet.fr/public/hack/proxy/prxchecker.c

et a un script php pas de moi non plus que voiçi :

<?php
$myip = trim($_GET['myip']);
if(empty($myip)) {
  echo "Usage: check-anonymous.php?myip=YOUR_IP_ADRESSE"."\n";
} else if (($_SERVER['REMOTE_ADDR'] == $myip)
  || ($_SERVER['HTTP_X_FORWARDED_FOR'] == $myip)) {
  echo "Not anonymous"."\n";
} else {
  echo "Anonymous"."\n";
}
?>

Bon...ce scrip fait le même boulot que ça : http://www.samair.ru/proxy-checker/index.php Mais au moins ça me fait bosser mon bash wink

Remarques et conseils/critiques bienvenus !


" Read The F$$$$$ Manual "      --->  man man

Pensez à passer en RÉSOLU...(en éditant le titre du 1er message)

Hors ligne

Haut de page ↑