OVH Cloud OVH Cloud

vérifier la présence d'un serveur d'un fichier sur le net

24 réponses
Avatar
pere.noel
j'ai commencé à regarder comment faire pour vérifier que les urls dans
un fichier de signets sont correctes.

je fais ça avec ruby, la réponse est très lente, 'j'ai de l'ordre de 400
urls à vérifier...

y a t'il des outils spécifiques mac, dispo en ligne de commande ???

(sur MacOS 9 il y avait une appli d'un certain potier (?) qui faisait
ça.

--
une bévue

10 réponses

1 2 3
Avatar
pere.noel
Luc Heinrich wrote:

en ruby, si j'essaie sur un site qui n'existe pas, le module plante,


Personne ne pourra t'aider de ce coté si tu ne donnes pas au moins un
bout de code...


ben, j'ai "bêtement" utilisé l'exemple de la docum, en changeant
simplement les valeurs retournées :

------------------------------------------------------------------------
def fetchUrl(uri_str, limit = 10)
return 0 if limit == 0
response = Net::HTTP.get_response(URI.parse(uri_str))
case response
when Net::HTTPSuccess then response
when Net::HTTPRedirection then fetchUrl(response['location'], limit -
1)
else
response.error!
end
return 1 if limit == 10
return limit if limit < 10
end
------------------------------------------------------------------------

donc ça plante si j'entre l'adresse d'un site qui n'existe pas...

alors que je souhaite obtenir, dans ce cas, le code d'erreur...

merci d'avance, nb : j'ouvre un autre fil sur la détection d'encodage en
Ruby...
--
une bévue


Avatar
laurent.pertois
Une bévue wrote:

un truc qui sert à rien quoi...


...dans ton cas.

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Avatar
luc
Une bévue wrote:

donc ça plante si j'entre l'adresse d'un site qui n'existe pas...


Ca veut dire quoi "ça plante" ?

Si l'url est invalide 'get_response' va lancer une exception
SocketError, ou un truc du genre, ce qui est tout à fait normal. Si
l'url est valide mais que la resource n'existe pas, tu lances toi même
une exception en faisant 'response.error!'. Donc tout me parrait tout à
fait normal.

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:

Ca veut dire quoi "ça plante" ?


qu'après l'url "invalide" (pour moi invalide veut dire url d'un domaine
qui n'existe pas mais dont la syntaxe de l'url est correcte).
Si l'url est invalide 'get_response' va lancer une exception
SocketError, ou un truc du genre, ce qui est tout à fait normal.


comment récupérer cette SOcketError, sans que le prog s'arrête.
Si
l'url est valide mais que la resource n'existe pas, tu lances toi même
une exception en faisant 'response.error!'. Donc tout me parrait tout à
fait normal.


donc l'exemple donné dans le tuto n'est pas bon, il faut que je me
renseigne pour savoir comment sortir autrement.

je ne sais pas gérer les erreurs en ruby, en tout cas pas comme en java,
où le prog après avoir envoyé son message d'erreur peut continuer...
--
une bévue

Avatar
luc
Une bévue wrote:

comment récupérer cette SOcketError, sans que le prog s'arrête.


begin
response = Net::HTTP.get_response(URI.parse(uri_str))
rescue SocketError
puts "booom!"
end

donc l'exemple donné dans le tuto n'est pas bon, il faut que je me
renseigne pour savoir comment sortir autrement.


L'exemple est bon, il est juste simplifié.

je ne sais pas gérer les erreurs en ruby, en tout cas pas comme en java,
où le prog après avoir envoyé son message d'erreur peut continuer...


La gestion des exception est très similaire, il n'y a rien de compliqué.

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:


begin
response = Net::HTTP.get_response(URI.parse(uri_str))
rescue SocketError
puts "booom!"
end

donc l'exemple donné dans le tuto n'est pas bon, il faut que je me
renseigne pour savoir comment sortir autrement.


L'exemple est bon, il est juste simplifié.

je ne sais pas gérer les erreurs en ruby, en tout cas pas comme en java,
où le prog après avoir envoyé son message d'erreur peut continuer...


La gestion des exception est très similaire, il n'y a rien de compliqué.


OK, merci, je vais essayer de trouver un tuto là-dessus.

--
une bévue


Avatar
luc
Une bévue wrote:

OK, merci, je vais essayer de trouver un tuto là-dessus.


<http://www.rubycentral.com/book/tut_exceptions.html>

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:


<http://www.rubycentral.com/book/tut_exceptions.html>


parfait, je l'avais sous le code mais à la page sur les regexp...
--
une bévue

Avatar
Jaypee
Une bévue wrote:
Luc Heinrich wrote:


en ruby, si j'essaie sur un site qui n'existe pas, le module plante,


Personne ne pourra t'aider de ce coté si tu ne donnes pas au moins un
bout de code...



ben, j'ai "bêtement" utilisé l'exemple de la docum, en changeant
simplement les valeurs retournées :

------------------------------------------------------------------------
def fetchUrl(uri_str, limit = 10)
return 0 if limit == 0
response = Net::HTTP.get_response(URI.parse(uri_str))
case response
when Net::HTTPSuccess then response
when Net::HTTPRedirection then fetchUrl(response['location'], limit -
1)
else
response.error!
end
return 1 if limit == 10
return limit if limit < 10
end
------------------------------------------------------------------------

donc ça plante si j'entre l'adresse d'un site qui n'existe pas...

alors que je souhaite obtenir, dans ce cas, le code d'erreur...

merci d'avance, nb : j'ouvre un autre fil sur la détection d'encodage en
Ruby...
Je ne sais pas si çà répondrait à ta question mais il y a un exemple de

code sur la page de FXruby un exemple pour aller consulter son Dilbert
quotidien, à la fois d'ouverture de la page web et parsing HTML de la
page. <http://www.fxruby.org/examples/dilbert.rb>
Sinon le recours à
begin
...
rescue => exception
...
end
la version Ruby du try/catch devrait t'aider à bien retomber sur tes
pattes dans tous les cas.
Le code typique ressemble à ça :
begin
Net::HTTP.start(uri_str,80) {
|http|
response = http.get("/")
rescue => exc
exc.inspect // Je n' ai aps fouillé rdoc pour trouver la bonne méthode
end
La réponse est plutôt ça :
"#<SocketError: getaddrinfo: No address associated with nodename>"
ou ça :
#<Net::HTTPOK 200 OK readbody=true>

J-P



Avatar
pere.noel
Jaypee wrote:

Je ne sais pas si çà répondrait à ta question mais il y a un exemple de
code sur la page de FXruby un exemple pour aller consulter son Dilbert
quotidien, à la fois d'ouverture de la page web et parsing HTML de la
page. <http://www.fxruby.org/examples/dilbert.rb>
Sinon le recours à
begin
...
rescue => exception
...
end
la version Ruby du try/catch devrait t'aider à bien retomber sur tes
pattes dans tous les cas.
Le code typique ressemble à ça :
begin
Net::HTTP.start(uri_str,80) {
|http|
response = http.get("/")
rescue => exc
exc.inspect // Je n' ai aps fouillé rdoc pour trouver la bonne méthode
end
La réponse est plutôt ça :
"#<SocketError: getaddrinfo: No address associated with nodename>"
ou ça :
#<Net::HTTPOK 200 OK readbody=true>


ouais, merci beaucoup, je vais pouvoir me dépatouiller...

c'est bien FXRuby, portable ?
--
une bévue

1 2 3