我正在运行一个使用 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)
我很难找到任何关于如何调试它的信息,所以如果有人有任何想法,他们将不胜感激。
提前致谢。
最佳答案
原来脚本是从不同的用户远程运行的,而不是在本地运行的。我不确定是什么环境变化导致了这个问题,但是一旦我们将远程实例设置为以与本地相同的用户身份运行,一切都运行良好。
关于windows - 错误 : The requested service provider could not be loaded or initialized. - 套接字 (2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1544790/