2

我正在运行一个使用 Ruby/MySQL 和 net/ftp 的 ruby​​ 脚本。该脚本在 Windows Vista 机器上运行,并试图创建与同一远程 Solaris 服务器的数据库和 ftp 连接。

这是代码的要点:

require 'mysql'
require 'net/ftp'

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

现在,如果我从它所在的 Vista 框中运行脚本,一切都会正常运行。但是,正在通过 NRPE 从另一台服务器调用该脚本,这就是错误发生的时候。

如果我将 db["host"]/ftp["host"] 设置为等于远程服务器的完全限定域名,则会收到以下错误:

getaddrinfo: no address associated with hostname.

收到该错误后,我尝试从脚本 ping 服务器,果然在尝试 ping 主机名时它失败了,但是,当我 ping IP 地址时它起作用了。

但是,如果我将 db["host"]/ftp["host"] 设置为远程服务器的 IP 地址,我会收到此错误:

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

我很难找到有关如何调试它的任何信息,所以如果有人有任何想法,他们将不胜感激。

提前致谢。

4

1 回答 1

0

原来脚本是从不同的用户远程运行的,而不是在本地运行时。我不确定导致问题的环境发生了什么变化,但是一旦我们将远程实例设置为与本地用户相同的用户运行,一切正常。

于 2009-10-29T20:06:23.233 回答