Cher journal privé,
Je souhaite réaliser un ptit programme en C censé acceder a une page web a interval régulier (jlavais déjà fais, mais pas en C...)
je m'explique :
Mon serveur ftp tourne en permanence, mais son ip change toutes les 24h, donc quand je suis pas chez moi, je peux me connecter a une page personnelle via le web qui indique ma derniere IP attribuée, elle raffraichie l'info toutes les 10 minutes.
J'ai plus qu'a me connecter sur mon serveur ftp pour récuperer mes données.
La page personnelle existe déjà, c'est les vestiges de mon ancien programme qui marchait bien avant que je passe sous linux
Donc le code doit etre un truc tout bete, genre :
int main()
{
while (1)
{
system("lynx lynx -accept_all_cookies http://mapageperso.com(...)");
sleep(600);
}
}
Ca marche, mais très mal.
Il faudrait en effet que je trouve une astuce pour que lynx se ferme tout seul après qu'il se soit connecté a la page, sinon il bloque la boucle.
De plus, j'aurai aimé un timer, j'ai regardé sur le net, mais timer_create semble marcher avec un systeme de signaux propres a unix, et j'avoue que j'y connais pas grand chose... :-\
Donc si quelqu'un a pigé mon probleme, et qu'il veut bien m'aider...
Ou si quelqu'un n'a pa compris mon probleme, mais sait malgrès tout comment on fait un timer qui par exemple dit "hello wordl" toutes les 5 min que je comprenne le principe (sans utiliser ma technique du while hein, c'est pour les crados ca..)
Bref..
Merci d'avance.
# Re: Timer
Posté par cho7 . Évalué à -5.
Vous pouvez me moinsser pour la peine...
# Re: Timer
Posté par kolter (site web personnel, Mastodon) . Évalué à 9.
ensuite tu télécharge un programme genre ddclient (apt-get install ddclient), tu le configure et il s'install sous la forme d'un démon qui à intervalle régulier (que tu choisis) envoie ton ip au serveur dyndns pour que le lien mamachine.homeip.org <-> ton ip soit tjs effectif....
au final d'ou que tu sois : t'accède à ta machine par son nom : mamachine.homeip.org
en gros ça fait la même chose que ce que tu souhaite faire mais en mieux....;
j'espère avaoir été clair....
M.
[^] # Re: Timer
Posté par cho7 . Évalué à 3.
Sur ma page perso, l'adresse est http://mapage.fr.st(...)
Ca redirige automatiquement sur la derniere IP reçue.
La seul différence, c'est que toi tu m'a filé un programme tout fait pour envoyer l'adresse IP, alors que c'est précisement ce point que je voulais réaliser par mes soins (en fait je veux limiter au maximum la dépendance avec un quelquonque logiciel ou hebergeur, ma page web fait quelques lignes de code, donc ca va pas chercher bien loin si jdois la déplacer autre part quand l'hebergeur fermera)
Mais sinon merci quand meme.
[^] # Re: Timer
Posté par Victor . Évalué à 1.
# Re: Timer
Posté par mush . Évalué à 3.
[^] # Re: Timer
Posté par Gonéri Le Bouder (Mastodon) . Évalué à 3.
[^] # Re: Timer
Posté par cho7 . Évalué à 2.
J'ai fait un lynx --dump et j'ai redirigé ca vers /dev/null car j'en ai pas besoin, mon ptit daemon est fin prêt :-)
Merci beaucoup !
Mais pour la culture générale, quelqu'un pourrait m'expliquer via quelques lignes de code comment faire un timer en C qui dit "hello" toutes les 2 minutes par exemple ? (un vrai timer, avec la fonction timer_create que je puisse voir enfin comment ca marche..)
[^] # Re: Timer
Posté par Mathieu Pillard (site web personnel) . Évalué à 4.
http://developer.gnome.org/doc/API/2.0/glib/glib-Timers.html(...)
# Re: Timer
Posté par Mathieu Pillard (site web personnel) . Évalué à 9.
Ensuite, personellement j'utilise un lynx -dump dans /etc/ppp/ip-up , pas besoin de cron et ca marche tres bien :)
# Re: Timer
Posté par doublehp (site web personnel) . Évalué à 1.
- apel via crontab toutes les heures
- cherchage de l ip courante
- construction d un fichier de sequence de touches pour lynx
- apel de lynx avec le fichier precedement construi
- attente 1 minute, le temps que lynx navigue ( avec des authentifications SSL dans le tas )
- tuage de lynx a la barrebarre parceque j avais recupere son ip avec la var d env $! IIRC
donc c etait un gros melange de crontab, shel, C, lynx et peut etre d autres que j avais oublie, ca plantait une fois sur deux parceque comme le site auquel lynx accedait changeait des fois, il y avait pas tj le bon nombre de "fleche vers le bas"
si ton pb se limite a lancer une tache toutes les 5 minutes:
- crontab -e
- man 3 sleep
mais si tu n as pas comme moi besoin d acceder a une page en SSL avec navigation complexe, peut etre que tu trouvera une librairie C qui permet d ouvrire des URL ... sinon tu peut ecrire des bouts en php3 , sachant que un script php3 peut etre execute en dehors d un server web, tout comme un script PERL ou BASH ... mais pour ca il faut l interpreteur qui se trouve dans le pakage (debian) php3-cgi ou php4-cgi
[^] # Re: Timer
Posté par cho7 . Évalué à 2.
Mais tes méthodes bien dégeulasses me rappele etrangement les miennes... hum t'aurai pas fait un bts info toi ? lol
[^] # Re: Timer
Posté par doublehp (site web personnel) . Évalué à 1.
[^] # Re: Timer
Posté par cho7 . Évalué à 1.
Mais l'an prochain si tout se passe bien jme casse de là, jvais faire un truc en alternance sur 2 ans, une ecole de la chambre de commerce du val d'oise.
bref..
[^] # Re: Timer
Posté par cho7 . Évalué à 1.
Si j'peux meme plus discuter dans mon propre journal ou va le monde ?
Bande de saumon moinsseurs (allez moinssez encore jviens de vous traiter de saumon (hannnnn))
# Re: Timer
Posté par Edouard Gomez (site web personnel) . Évalué à 2.
int sleeping_time = 600;
while ((sleeping_time = sleep(sleeping_time)));
Plus de détails dans la manpage "man 3 sleep"
Peut etre est il aussi utile pour toi de voir du coté de errno pour ne boucler que dans certains cas (type EINTR)
# CURL
Posté par benja . Évalué à 2.
Sinon, je te conseille la lecture de "The Art Of Scripting HTTP Requests Using Curl" http://curl.haxx.se/docs/httpscripting.html(...) . Curl est vraiment pas mal pour faire ce genre de chose, en plus y a une biblio avec une api C assez simple si tu tiens vraiment à coder du C.
[^] # Re: CURL
Posté par cho7 . Évalué à 1.
L'interet c'est précisément d'etre dépendant du minimum de chose, le script shell sous windows par exemple c'est mort, déjà là ya lynx qui fait chier en cas de portage, mais bon j'men accomoderai
J'ai une formation très orientée developpement, et je préfère utiliser de vrai langages évolués, car mine de rien le shell c'est très bien, mais un jeu en open3D avec le shell c'est un peu plus dur.
Donc désolé d'aller a contre courrant et de ne pas choisir la facilité comme tout le monde (bouh vilain petit saumon)
[^] # Re: CURL
Posté par Pierre . Évalué à 3.
Non, sérieux, si tu as une bonne formation développement, on doit te dire que si il y a pleins de langages, c'est que chacun a son utilité ( même le fortran ).
Sache que la fonction C 'system' lance présicément un shell, avec un fork() et un waitpid().
C'est très violent.
Sache aussi que le langage de script python a des binding OpenGL (et pas Open3D!), et ca marche très bien pour faire des petites applis.
Si tu as besoin de faire du script, c'est bash ou perl ( les 2 sont parfaitement portables, et existent sous quasiment toutes les plateformes ( même sur atari..)
[^] # Re: CURL
Posté par ckyl . Évalué à 1.
epitech ?
(ta maitrise du vrai langage evolué que tu as appris dans ton ecole est impressionante d'ailleur et tu as raison a ne pas t'interesser a ce sous langage qu'est le shell tout juste bon pour appeler ps et cd :-)
[^] # Re: CURL
Posté par cho7 . Évalué à -1.
Bon je vais essayer de rester calme, mais mince ya pas que linux et unix dans la vie.
Le shell c'est très bien, ok, je ne crache pas dessus.
MAIS MERDE JE PREFERE LES LANGAGES EVOLUES !
raaahhhh je déséspere....
Des trucs comme le c++, le java, le delphi meme pourquoi pas.
Enfin mince, je parle de gout et de couleur là, le shell ya quand meme une connotation batch très prononcée non ??
Moi je préfère des fonctions, des pointeurs, des structures, et pour répondre au gars qui précédemment m'a dit que le C n'est pour lui pas évolué, bah jlui rappelle quand meme, que unix n'a pas été fait en shell, mais en C.
Et pis si jpréfère programme en C ou autre chose plutot qu'en shell ca me regare un minimum non ?
Et pis d'ailleur : ta maitrise du vrai langage evolué que tu as appris dans ton ecole est impressionante d'ailleur et tu as raison a ne pas t'interesser a ce sous langage qu'est le shell tout juste bon pour appeler ps et cd :-)
Ou ai-je dis que le shell etait un sous langage ? j'ai juste dis que le C etait plus performant, et arreter un peu le chauvinisme shellien, le shell c'est moins rapide que le C c'est un fait
De plus ou ai je dis que je maitrisai le C ? je ne pense pas m'etre vanté de quoi que ce soit. Au contraire le sujet de ce journal est comment faire un timer... il est donc evident que j'suis pas doué dans ce langage, car il est vrai que j'ai l'habitude de travailler avec d'autres.
Ensuite épitech je sais pas ce que ca vient foutre là, mais quoiqu'il en soit, vu ce que je pense d'épita (voir un de mes commentaires sur un journal sur les ecole d'ingé vu précédement), bah épitech c'est du pareil au meme...
Bref, toute facon, ca change pas de d'habitude, yen aura toujours pour raler, pour croire qu'on attaque leur bon vieux shell adoré, alors que j'en ai strictement rien a foutre je veux juste faire un timer en C.
Bref
[^] # Re: CURL
Posté par thecat . Évalué à 1.
Bin justement, le shell est un langage trés evolué, trop d'ailleurs pour faire certaines applications (un OS par exemple). Le C est un langage évolué par rapport à l'asm, mais suggérer que le C est plus évolué que le shell, c'est etre un abruti (aie ... zut, je voulais vraiment répondre calmement au monsieur).
Par contre je suis d'accord avec eux, pourquoi le faire en C alors que le shell est justement fait pour cela.
Et puis tant qu'a utiliser un langage evolue comme le C, pourquoi tu ouvres pas un socket et tu lui envoies pas une requette http? Car faire un prog en C pour appeler Lynx, c'est comment dire ... nul (au vu de ce que tu souhaites réaliser).
[^] # Re: CURL
Posté par cho7 . Évalué à 0.
Chaque chose en son temps, j'ai précisé bien plus haut que l'usage de lynx etait le dernier point problématique.
[^] # Re: CURL
Posté par thecat . Évalué à 2.
> ... Chaque chose en son temps, ...
A car tu compte utiliser reelement des sockets pour ca?
Franchement, un coup d'asm (langage encore plus évolué) et tu attaque la carte réseaux direct pour envoyer la bonne séquence de bit au serveur http ...
sinon , d'un de tes post plus haut:
>J'ai une formation très orientée developpement ...
Tu sait pas faire de timer, ni de socket, tu dit que le C est un langage évolué par rapport au shell, tu va reinventer la roue en faisant un demon pour periodiquement mettre un truc a jour ....
rassure moi, tu en est au début de la "formation" non?
[^] # Re: CURL
Posté par cho7 . Évalué à 1.
[^] # Re: CURL
Posté par benja . Évalué à 1.
[^] # Re: CURL
Posté par ckyl . Évalué à 2.
un peu oui
> MAIS MERDE JE PREFERE LES LANGAGES EVOLUES !
Le C un langage evolué pour faire du scripting ? Fait gaffe quand meme toutes les conneries que tu dis ici sont archivés par google.
> Enfin mince, je parle de gout et de couleur là, le shell ya quand meme une connotation batch très prononcée non ??
je serais toi je ferais un man zshall pour voir tout ce qu'on peut faire en sh. Enfin tu as mauvais gout cela est pardonable, mais expliquer que tu preferes le C et faire un system("lynx ") c'est ridicule.
> j'ai juste dis que le C etait plus performant, et arreter un peu le chauvinisme shellien, le shell c'est moins rapide que le C c'est un fait
J'avoue que le shell en beaucoup plus long et consome beaucoup plus de CPU pour faire un sleep(3600). Tu as entierement raison de vouloir optimiser une telle tache qui pourrait mettre KO ta machine.
> Au contraire le sujet de ce journal est comment faire un timer...
A coup de sleep, voir aussi man 2 setitimer avec ITIMER_REAL.
Enfin bref; revise quand meme ton livret des choix technologiques ca pourrait t'etre utile dans la vie :-)
Et pour l'independence de la plateforme laisse moi rire ton prog fait deux choses : un sleep (posix donc hautement portable tu as raison) et un system("lynx ") alors la y'a pas a dire dans le portable et independent de la plateforme je pense que l'on fait pas mieux ! Si tu veux etre independent tu vais du vrai C avec des vrais sockets la ton script ira 42 x plus vite qu'en sh et sera 72 fois plus portable.
Vouloir apprendre a le faire en C c'est OK, sortir des raisons aussi nulles que celles la je me poserai des questions.
# Re: Timer
Posté par Snark_Boojum . Évalué à 4.
2. dans /etc/ppp/ip-upd.d, mettre un script qui va mettre à jour la base dyndns (ipcheck, par exemple)
C'est pas la peine de mettre à jour toutes les dix minutes une ip qui ne change que quand on se reconnecte!
[^] # Re: Timer
Posté par cho7 . Évalué à 2.
Mon IP change toutes les 24h de facon invariable (routeur)
Mais supposons que je sois a mon bahut, j'ai absolument besoin d'un fichier, et bah je serai content d'avoir l'ip de mon poste a jour, ou au pire d'attendre 10min que ca raffraichisse la nouvelle IP.
Jme vois pas dire : ah bah attendez, si ca se trouve l'ip vient de changer, on va ptetre devoir attendre 1 heure que la nouvelle IP nous soit communiquée...
bref.
[^] # Re: Timer
Posté par Vivi (site web personnel) . Évalué à 1.
ben justement avec dyndns t'attends pas 10 min, c'est mis à jour dès que ça reconnecte. Et t'as pas besoin de passer par une page web pour récupérer l'IP.
[^] # Re: Timer
Posté par Pierre . Évalué à 1.
Le script ip-up est appelé par ppp *pile-poil* quand tu change d'IP.
Donc *instantanément*, ça met à jour le serveur dns. Pas besoin d'attendre 10 mins.
Et en plus, ça marche aussi pour te connecter à ton ordi via ssh ou ftp ou cvs, etc.
[^] # Re: Timer
Posté par Snark_Boojum . Évalué à 1.
# Réponse à la con
Posté par xilun . Évalué à 1.
ABONNES TOI A UN VRAI FAI QUI TE FOURNI DES VRAIS IP FIXE BORDEL DE MERDE !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.