2009-10-09 13 views
2

Je cours un script ruby ​​qui utilise Ruby/MySQL et net/ftp. Le script s'exécute sur une boîte Windows Vista et tente de créer une connexion de base de données et ftp au même serveur Solaris distant.Erreur: Le fournisseur de service demandé n'a pas pu être chargé ou initialisé. - socket (2)

Voici l'essentiel du code:

require 'mysql' 
require 'net/ftp' 

dbh = Mysql.real_connect(db["host"], db["user"], db["pass"], db["name"]) 
ftp = Net::FTP.new(ftp["host"]) 

Maintenant, si je lance le script dans la zone Vista qu'il réside sur tout fonctionne comme il se doit. Cependant, le script est appelé depuis un autre serveur via NRPE et c'est à ce moment que l'erreur se produit.

Si je mets db [ « host »]/ftp [ « host »] égal au nom de domaine complet du serveur distant est l'erreur ici je reçois:

getaddrinfo: no address associated with hostname. 

Après avoir reçu cette erreur, je essayé de ping sur le serveur à partir du script et bien sûr, il a échoué lors de la tentative de ping sur le nom d'hôte, cependant, cela a fonctionné quand j'ai cinglé l'adresse IP.

Mais si je mets db [ « host »]/ftp [ « host »] à l'adresse IP du serveur distant je reçois cette erreur:

The requested service provider could not be loaded or initialized. - socket(2) 

Je vais avoir du mal à trouver des informations sur la façon de déboguer cela, donc si quelqu'un a des idées, ils seront grandement appréciés.

Merci d'avance.

Répondre

0

Il s'avère que le script était exécuté à distance depuis un autre utilisateur que lorsqu'il était exécuté localement. Je ne suis pas exactement sûr de ce que l'environnement a changé qui a causé le problème, mais une fois que nous avons configuré l'instance distante pour exécuter en tant que le même utilisateur que le local, tout a bien fonctionné.