Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/10/2013, à 14:10

voxpopuli

Petit script bash + php pour communication inter-server

Salutation.
Je suis en train de rédiger un petit script qui permettra a mon serveur perso de communiquer avec un serveur on-line afin principalement de retrouver ma bêbête sur le réseau sans dépendre de service Prismiens comme No-IP.
L'erreur qui me bloque pour le moment est la suivante:
Lorsque le wget télécharge la page, le script php lui renvoi la valeur négative comme si le mot de passe ou le login était mauvais, hors si je copie colle le lien dans mon navigateur le script me renvoi la valeur positive. Je suppose donc que le wget ne fonctionne pas exactement comme http mais je ne saurais en dire plus sad

Voici les deux scripts:

Le script php sur le serveur online, RetrouveMoi_Elle.php

<?php
/*
  _____      _                             __  __       _ 
 |  __ \    | |                           |  \/  |     (_)
 | |__) |___| |_ _ __ ___  _   ___   _____| \  / | ___  _ 
 |  _  // _ \ __| '__/ _ \| | | \ \ / / _ \ |\/| |/ _ \| |
 | | \ \  __/ |_| | | (_) | |_| |\ V /  __/ |  | | (_) | |
 |_|  \_\___|\__|_|  \___/ \__,_| \_/ \___|_|  |_|\___/|_|                                                          
			EEEEEEEEEEEEEEEEEEEEEElllllll lllllll                     
			E::::::::::::::::::::El:::::l l:::::l                     
			E::::::::::::::::::::El:::::l l:::::l                     
			EE::::::EEEEEEEEE::::El:::::l l:::::l                     
			  E:::::E       EEEEEE l::::l  l::::l     eeeeeeeeeeee    
			  E:::::E              l::::l  l::::l   ee::::::::::::ee  
			  E::::::EEEEEEEEEE    l::::l  l::::l  e::::::eeeee:::::ee
			  E:::::::::::::::E    l::::l  l::::l e::::::e     e:::::e
			  E:::::::::::::::E    l::::l  l::::l e:::::::eeeee::::::e
			  E::::::EEEEEEEEEE    l::::l  l::::l e:::::::::::::::::e 
			  E:::::E              l::::l  l::::l e::::::eeeeeeeeeee  
			  E:::::E       EEEEEE l::::l  l::::l e:::::::e           
			EE::::::EEEEEEEE:::::El::::::ll::::::le::::::::e          
			E::::::::::::::::::::El::::::ll::::::l e::::::::eeeeeeee  
			E::::::::::::::::::::El::::::ll::::::l  ee:::::::::::::e  
			EEEEEEEEEEEEEEEEEEEEEEllllllllllllllll    eeeeeeeeeeeeee  
                                                          
Script Femelle de RetrouveMoi.
RetrouveMoi_Lui la contacte (via un wget), Elle, après avoir vérifié son identité, lui renvoi une page html avec "Oui" ou "Non"
*/

if ($_GET["login"]=="blablabla" && $_GET["pass"]=="123"){	echo "Oui je te choisis";	
}else{ echo 'Non pour qui me prends-tu?'; }
?>

Le script bash sur le serveur perso:

#!/bin/sh

#  _____      _                             __  __       _ 
# |  __ \    | |                           |  \/  |     (_)
# | |__) |___| |_ _ __ ___  _   ___   _____| \  / | ___  _ 
# |  _  // _ \ __| '__/ _ \| | | \ \ / / _ \ |\/| |/ _ \| |
# | | \ \  __/ |_| | | (_) | |_| |\ V /  __/ |  | | (_) | |
# |_|  \_\___|\__|_|  \___/ \__,_| \_/ \___|_|  |_|\___/|_|                                                                                                         
#			LLLLLLLLLLL                                 iiii  
#			L:::::::::L                                i::::i 
#			L:::::::::L                                 iiii  
#			LL:::::::LL                                       
#			  L:::::L               uuuuuu    uuuuuu  iiiiiii 
#			  L:::::L               u::::u    u::::u  i:::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L         LLLLLLu:::::uuuu:::::u   i::::i 
#			LL:::::::LLLLLLLLL:::::Lu:::::::::::::::uui::::::i
#			L::::::::::::::::::::::L u:::::::::::::::ui::::::i
#			L::::::::::::::::::::::L  uu::::::::uu:::ui::::::i
#			LLLLLLLLLLLLLLLLLLLLLLLL    uuuuuuuu  uuuuiiiiiiii
                                                  
# âme soeur de RetrouveMoi_Elle, Lui doit la contacter (via un wget et des variables GET avec login/pass et du brole).
# Si Elle lui dit "Oui", ça a fonctionné, si non c'est qu'il y a une erreur.

#test
RESULTAT=`wget -qO- http://127.0.0.1/RetrouveMoi_Elle.php?login=blablabla&pass=123`
#O tells it to output somewhere, - tells O to output it to the current stream. And q tells wget not to include any of its "Connecting to xxx..." information. 

echo "${RESULTAT}"
if  ((echo "${RESULTAT}" | grep 'Oui je te choisis')) ; 
then
	echo $(date +%T)' Elle te dit oui !'
else
	echo $(date +%T)' Et un divorce de plus !'
fi

résultat de la commande:

$ ▶ ./RetrouveMoi_Lui.sh
Pour qui me prends-tu?
13:53:21 Et un divorce de plus !

Merci d'avance pour votre aide

Dernière modification par voxpopuli (Le 19/10/2013, à 15:16)


« Si la destinée ne nous aide pas, nous l'aiderons nous même à se réaliser !  »
$Wold.Action.Boot();

Hors ligne

#2 Le 11/10/2013, à 14:23

Watael

Re : Petit script bash + php pour communication inter-server

salut,

Mets l'adresse (http://...) entre guillemets (le shell interprète certains caractères de manière spéciale s'ils ne sont pas protégés).

Les parenthèses doubles sont une évaluation arithmétique, pas un test sur une chaîne.
=>

if test chaine = "autre chaine"

Mais ce n'est pas utile ici, simplement:

if echo "$chaine" | grep 'chaine'; then ... fi

Tu parles de script bash, mais le shebang appelle sh. Attention: certaines fonctions de bash pourraient ne pas être disponibles.

Dernière modification par Watael (Le 11/10/2013, à 14:25)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 11/10/2013, à 15:05

voxpopuli

Re : Petit script bash + php pour communication inter-server

Merci ça fonctionne parfaitement je te remercie grandement.
Je posterai le script une fois terminé pour ceux que sa intéresserait smile


« Si la destinée ne nous aide pas, nous l'aiderons nous même à se réaliser !  »
$Wold.Action.Boot();

Hors ligne

#4 Le 16/10/2013, à 00:03

voxpopuli

Re : Petit script bash + php pour communication inter-server

Voila j'ai terminé mon script et le tutorial pour s'en servir. wink
Pour ceux que ça intéresse voila le lien:
http://azure.lescigales.org/wordpress/?p=107
et le lien direct download: http://azure.lescigales.org/wordpress/t … Moi.tar.gz

Dernière modification par voxpopuli (Le 19/10/2013, à 15:17)


« Si la destinée ne nous aide pas, nous l'aiderons nous même à se réaliser !  »
$Wold.Action.Boot();

Hors ligne

#5 Le 19/10/2013, à 15:12

voxpopuli

Re : Petit script bash + php pour communication inter-server

Je suis en train de porter mon programme (RetrouveMoi_Lui.sh) sur Windows via un script .batch.
Un de vous pourrait-il me corriger ma commande netcat (sauf si vous avez une meilleure commande ^^) svp:

A noter que les commandes suivantes ont été tapées sur linux (vu que c'est le même netcat ^^)

$ ▶ echo 'GET / HTTP/1.1' | nc http://azure.lescigales.org/RetrouveMoi/RetrouveMoi_Elle.php?login=babla&password=autre 80 -v
[1] 5669
This is nc from the netcat-openbsd package. An alternative nc is available
in the netcat-traditional package.
usage: nc [-46bCDdhjklnrStUuvZz] [-I length] [-i interval] [-O length]
	  [-P proxy_username] [-p source_port] [-q seconds] [-s source]
	  [-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol]
	  [-x proxy_address[:port]] [destination] [port]
80 : commande introuvable
[1]+  Termine 1               echo 'GET / HTTP/1.1' | nc http://azure.lescigales.org/RetrouveMoi/RetrouveMoi_Elle.php?login=babla&password=autre

Quand je teste avec des guillemets j'ai ça:

echo 'GET / HTTP/1.1' | nc "http://azure.lescigales.org/RetrouveMoi/RetrouveMoi_Elle.php?login=blabla&password=autre" 80 -v
nc: getaddrinfo: System error

Normalement la commande devrait renvoyer

Non pour qui me prends-tu?

hors a peu près la même commande sur google fonctionne:

echo 'GET' | nc www.google.fr 80 -v
Connection to www.google.fr 80 port [tcp/http] succeeded!
HTTP/1.0 302 Found
Location: http://www.google.be/?gws_rd=cr&ei=-oJiUrr3D6Xv0gXy5IDIDQ
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=2a32675ae6797047:FF=0:TM=1382187770:LM=1382187770:S=YHqkB2HAL94MpLA3; expires=Mon, 19-Oct-2015 13:02:50 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=NV4w4zgyK5KjqG4zKa-ee1Tfh6Zrfi6YvQcOcF1RqoRT2GXKSATc_6a6QfSfe8hhmqVfHhGV61qVZxLU03aMpT_gAbGwHUzDALTsLo8T491NPIPxkJ8M7g9PdkbKzs-M; expires=Sun, 20-Apr-2014 13:02:50 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Date: Sat, 19 Oct 2013 13:02:50 GMT
Server: gws
Content-Length: 258
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.be/?gws_rd=cr&amp;ei=-oJiUrr3D6Xv0gXy5IDIDQ">here</A>.
</BODY></HTML>

Merci d'avance pour votre aide précieuse.


PS: voici le script que je tente de porter sur windows:

#!/bin/bash
#  _____      _                             __  __       _ 
# |  __ \    | |                           |  \/  |     (_)
# | |__) |___| |_ _ __ ___  _   ___   _____| \  / | ___  _ 
# |  _  // _ \ __| '__/ _ \| | | \ \ / / _ \ |\/| |/ _ \| |
# | | \ \  __/ |_| | | (_) | |_| |\ V /  __/ |  | | (_) | |
# |_|  \_\___|\__|_|  \___/ \__,_| \_/ \___|_|  |_|\___/|_|                                                                                                         
#			LLLLLLLLLLL                                 iiii  
#			L:::::::::L                                i::::i 
#			L:::::::::L                                 iiii  
#			LL:::::::LL                                       
#			  L:::::L               uuuuuu    uuuuuu  iiiiiii 
#			  L:::::L               u::::u    u::::u  i:::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L               u::::u    u::::u   i::::i 
#			  L:::::L         LLLLLLu:::::uuuu:::::u   i::::i 
#			LL:::::::LLLLLLLLL:::::Lu:::::::::::::::uui::::::i
#			L::::::::::::::::::::::L u:::::::::::::::ui::::::i
#			L::::::::::::::::::::::L  uu::::::::uu:::ui::::::i
#			LLLLLLLLLLLLLLLLLLLLLLLL    uuuuuuuu  uuuuiiiiiiii
                                                  
# âme soeur de RetrouveMoi_Elle, Lui doit la contacter (via un wget et des variables GET avec login/pass et du brole).
# Si Elle lui dit "Oui", ça a fonctionné, si non c'est qu'il y a une erreur.
#test
RESULTAT=`wget -qO- "http://azure.lescigales.org/RetrouveMoi/RetrouveMoi_Elle.php?login=MonLogin&password=MonPassword"`
#O tells it to output somewhere, - tells O to output it to the current stream. And q tells wget not to include any of its "Connecting to xxx..." information. 
if  echo "$RESULTAT" | grep 'Oui je te choisis' ; 
then
	echo $(date +%T)' Elle te dit oui !'
else
	echo $(date +%T)' Et un divorce de plus !'
fi

Dernière modification par voxpopuli (Le 19/10/2013, à 15:20)


« Si la destinée ne nous aide pas, nous l'aiderons nous même à se réaliser !  »
$Wold.Action.Boot();

Hors ligne