#1 Le 11/10/2013, à 13: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
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, à 14: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, à 13: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, à 13:25)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 11/10/2013, à 14: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
« Si la destinée ne nous aide pas, nous l'aiderons nous même à se réaliser ! »
$Wold.Action.Boot();
Hors ligne
#4 Le 15/10/2013, à 23:03
- voxpopuli
Re : Petit script bash + php pour communication inter-server
Voila j'ai terminé mon script et le tutorial pour s'en servir.
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, à 14: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, à 14: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&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, à 14:20)
« Si la destinée ne nous aide pas, nous l'aiderons nous même à se réaliser ! »
$Wold.Action.Boot();
Hors ligne