<body>

Sitios web relacionados: PingBlog | Fotos

domingo, noviembre 27, 2005

Echando código: ¿Como hacer ping periodicamente?

Bueno, la forma más fácil es dejar que otros lo hagan por nosotros. Si usted tiene curl y alguna variante de UNIX (como Linux) podría tratar de hacer algo como lo siguiente:

   1:#!/bin/bash
2:#
3:# This script will call several ping services to notify when the site is updated.
4:#
5:# Author: josevnz@sourceforge.net
6:# License: LGPL
7:#
8:# Use 'ping-o-matic' to ping several blog indexers at the same time
9:#/usr/bin/curl 'http://pingomatic.com/ping/?title=KodeGeek&
blogurl=http%3A%2F%2Fkodegeek.com&chk_weblogscom=on&chk_blogs=on&amp;amp;amp;amp;amp;amp;
chk_technorati=on&chk_feedburner=on&chk_syndic8=on&chk_newsgator=on&chk_feedster=on&
chk_myyahoo=on&chk_pubsubcom=on&amp;chk_blogdigger=on&chk_blogrolling=on&
chk_blogstreet=on&
chk_moreover=on&chk_weblogalot=on&chk_icerocket=on'

10:# Use Technorati
11:/usr/bin/curl 'http://technorati.com/ping/http://kodegeek.com'

ACTUALIZACIÓN: Debo admitir que mi esfuerzo original fué bastante mediocre, así que con un poco más de esfuero decidí acomodar el script para hacer ping a más bitacoras, incluyendo a Veneblogs:

   1:#!/bin/bash
2:#
3:# This script will call several ping services to notify when the site is updated.
4:#
5:# Author: josevnz@sourceforge.net
6:# License: LGPL
7:#
8:
9:declare -r URL='http://kodegeek.com'
10:declare -r TITLE='KodeGeek'
11:declare -r SCRIPT=${0##*/}
12:
13:# Make sure we have a place to put our results
14:if [ ! -d $HOME/public_html/pings ]; then
15: mkdir -p $HOME/public_html/pings
16:fi
17:
18:# Put a plain index.html file if none is found
19:if [ ! -f $HOME/public_html/pings/index.html ]; then
20: echo '<html><head><title>KodeGeek<
/title></head><body
bgcolor="white"></body></html>'
21:
> $HOME/public_html/pings/index.html
22:fi
23:
24:function usage {
25:cat << EOF
26:$SCRIPT [-p|-t|-b|-n|-v]
27:Where:
28:
29:-p Use Ping-O-Matic
30:-t Use Technorati
31:-b Use Bitacoras.com
32:-n Use Bitacoras.net
33:-v Use Veneblogs (currently broken)
34:
35:NOTE: If you use Veneblogs, define your user and
password and environmental variables:
36:export VENEBLOGS_USERNAME=josevnz@kodegeek.com
37:export VENEBLOGS_PASSWORD=joserulez
38:
39:You can use all the flags if you want!
40:
41:Blog: KodeGeek - http://kodegeek.com
42:EOF
43:}
44:
45:if [ -z "$*" ]; then
46: usage
47: exit 192
48:fi
49:
50:while getopts "ptbnv" option; do
51: case $option in
52: p)
53: # Use 'ping-o-matic' to ping several blog indexers at the same time
54: /usr/bin/curl --show-error --user-agent 'Mozilla/4.0'
55:
--form "title=$TITLE" --form "blogurl=$URL" --form "chk_weblogscom=on"
--form "chk_blogs=on" --form "chk_feedburner=on" --form "chk_syndic8=on"
--form "chk_newsgator=on" --form "chk_feedster=on" --form "chk_myyahoo=on"
--form "chk_pubsubcom=on" --form "chk_blogdigger=on" --form "chk_blogrolling=on"
--form "chk_blogstreet=on" --form "chk_moreover=on" --form "chk_icerocket=on"
56:
-o $HOME/public_html/pings/pingomatic.com.html http://pingomatic.com/ping/
57: ;;
58: t)
59: # Use Technorati
60: /usr/bin/curl --user-agent 'Mozilla/4.0'
61:
-o $HOME/public_html/pings/technorati.com.html
'http://technorati.com/ping/'$URL
62: ;;
63: b)
64: # Use bitacoras.com
65: /usr/bin/curl --user-agent 'Mozilla/4.0'
66:
--referer http://bitacoras.com
67:
--form "weblog_name=$TITLE"
68: --form "weblog_url=$URL"
69:
--form "submit=Notificar actualización"
70:
-o $HOME/public_html/pings/bitacoras.com.html
71: http://bitacoras.com/directorio/ping.php
72: ;;
73: n)
74: # Use Bitacoras.net
75: /usr/bin/curl --user-agent 'Mozilla/4.0'
76:
--referer http://bitacoras.com
77:
--form "name=$TITLE"
78:
--form "url=$URL"
79:
--form "pnet=on"
80:
--form "escribe=1"
81:
-o $HOME/public_html/pings/bitacoras.net.html
82:
http://bitacoras.net/pingform/pingformulario.php
83: ;;
84: v)
85: # Use Veneblogs
86: if [ -z "$VENEBLOGS_USERNAME" ] || [ -z "$VENEBLOGS_PASSWORD" ]; then
87: printf "[ERROR]: Define VENEBLOGS_USERNAME and VENEBLOGS_PASSWORD\n"
88: else
89: /usr/bin/curl --user-agent 'Mozilla/4.0'
90:
--referer http://www.veneblogs.com/ping/pingmanual.php
91:
--form "name=login"
92: --form "username=$VENEBLOGS_USERNAME"
93:
--form "password=$VENEBLOGS_PASSWORD"
94: --form "operation=in"
95:
--form "submit= Enviar "
96:
-o $HOME/public_html/pings/veneblogs.com.html
97:
http://www.veneblogs.com/ping/prlogin.php
98: fi
99: ;;
100: *)
101: # Show the help
102: usage
103: exit 0
104: ;;
105: esac
106:done

El problema que tengo ahora es que Veneblogs es increiblemente ANAL a la hora de hacer pings (es el único directorio que pide usuario y clave. Ni siquiera Technorati lo hace). Los parametros de la forma no son el problema, así como no es suficiente pasarler el "referer", así que sospecho que hay una sesión involucrada (revicé los "cookies" pero no conseguí nada que me ayudara).

De esa manera les escribí a los chamos de VeneBlogs para ver que me decian al respecto:
Hola,

Estoy tratando de hacer una aplicación que haga pings a Veneblogs sin necesidad de utilizar un navegador, pero veneblogs simplemente no coopera; Pese a tener todos los campos correctos en una forma, usar post y usar el referer apropiado no logro hacer un ping.

Sospecho que necesito definir un cookie o una sesión apropiada y antes de sentarme a invertir mucho más tiempo en Veneblogs quería saber si hay alguna manera de hacer el proceso más amigable con scripts (como Technorati, Bitacoras.com, etc) o es que estoy haciendo algo definitivamente mal :)

Por cierto, gracias por el esfuerzo en mantener el sitio web.

Atentamente,

José Vicente Núñez Zuleta (KodeGeek.com)


¿Se le ocurre una manera más fácil?. Por cierto, el código está en CVS.

Buscar en Technorati:

2 Comentarios:

Blogger Angel dijo que...

Estoy haciendo algo similar a ti. Si te pillas el formulario de veneblogs, el que esta en pingmanual.php, envia sus parametros a prlogin.php, creo que eso puede ayudarte.

Echate una pasada por
#linuxmachos.org en irc.freenode.net

Saludos.

5:16 PM (enlace permanente)  
Blogger KodeGeek dijo que...

Hola Angel,

Gracias por visitar mi blog; Si el detalle de prlogin.php es cierto, es el URL que llamo al final con CURL:

http://www.veneblogs.com/ping/prlogin.php

Pero quizas la ruta está mala, ya que esta página me redirige a la página principal de Veneblogs.

7:59 PM (enlace permanente)  

Publicar un comentario en la entrada

Enlaces a este articulo:

Crear un vínculo

<< Regresar