Ruby on rails 尝试将ruby脚本转换为SSH时出现错误的ELF类警告

Ruby on rails 尝试将ruby脚本转换为SSH时出现错误的ELF类警告,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想ssh到一个linux服务器,然后运行一些命令。下面是ruby脚本。 需要“插座” 需要“rubygems” 需要“net/ssh” @hostname = "hostname" @username = "user" @password = "pass" @cmd = "ls -alt" begin ssh = Net::SSH.start(@hostname, @username, :password => @password) res = ssh

我想ssh到一个linux服务器,然后运行一些命令。下面是ruby脚本。 需要“插座” 需要“rubygems” 需要“net/ssh”

@hostname = "hostname"
@username = "user"
@password = "pass"
@cmd = "ls -alt"

 begin
        ssh = Net::SSH.start(@hostname, @username, :password => @password)
        res = ssh.exec!(@cmd)
        ssh.close
        puts res    
  rescue
        puts "Unable to connect to #{@hostname} using #{@username}/#{@password}"
  end
它为我提供了正确的输出,但在提供输出之前,它会打印以下警告消息:

ruby ssh.rb
Nov 5, 2014 3:21:02 PM jnr.netdb.NativeServicesDB load
WARNING: Failed to load native services db
java.lang.UnsatisfiedLinkError: /lib/libc.so.6: wrong ELF class: ELFCLASS32
    at jnr.ffi.provider.jffi.NativeLibrary.loadNativeLibraries(NativeLibrary.java:87)
    at jnr.ffi.provider.jffi.NativeLibrary.getNativeLibraries(NativeLibrary.java:70)
    at jnr.ffi.provider.jffi.NativeLibrary.getSymbolAddress(NativeLibrary.java:49)
    at jnr.ffi.provider.jffi.NativeLibrary.findSymbolAddress(NativeLibrary.java:59)
    at jnr.ffi.provider.jffi.AsmLibraryLoader.generateInterfaceImpl(AsmLibraryLoader.java:125)
    at jnr.ffi.provider.jffi.AsmLibraryLoader.loadLibrary(AsmLibraryLoader.java:63)
    at jnr.ffi.provider.jffi.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:43)
    at jnr.ffi.LibraryLoader.load(LibraryLoader.java:228)
    at jnr.ffi.Library.loadLibrary(Library.java:123)
    at jnr.ffi.Library.loadLibrary(Library.java:80)
    at jnr.netdb.NativeServicesDB.load(NativeServicesDB.java:81)
    at jnr.netdb.Service$ServicesDBSingletonHolder.load(Service.java:122)
    at jnr.netdb.Service$ServicesDBSingletonHolder.<clinit>(Service.java:118)
ruby ssh.rb
2014年11月5日下午3:21:02 jnr.netdb.NativeServicesDB加载
警告:无法加载本机服务数据库
java.lang.UnsatifiedLinkError:/lib/libc.so.6:错误的ELF类:ELFCLASS32
位于jnr.ffi.provider.jffi.nativellibrary.LoadNativellibraries(nativellibrary.java:87)
在jnr.ffi.provider.jffi.nativellibrary.getnativellibraries(nativellibrary.java:70)
在jnr.ffi.provider.jffi.nativellibrary.getSymbolAddress(nativellibrary.java:49)
位于jnr.ffi.provider.jffi.nativellibrary.findSymbolAddress(nativellibrary.java:59)
在jnr.ffi.provider.jffi.AsmLibraryLoader.generateInterfaceImpl(AsmLibraryLoader.java:125)
位于jnr.ffi.provider.jffi.AsmLibraryLoader.loadLibrary(AsmLibraryLoader.java:63)
位于jnr.ffi.provider.jffi.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:43)
在jnr.ffi.LibraryLoader.load(LibraryLoader.java:228)
在jnr.ffi.Library.loadLibrary(Library.java:123)
在jnr.ffi.Library.loadLibrary(Library.java:80)
在jnr.netdb.NativeServicesDB.load(NativeServicesDB.java:81)
在jnr.netdb.Service$ServicesDBSingletonHolder.load处(Service.java:122)
位于jnr.netdb.Service$ServicesDBSingletonHolder。(Service.java:118)
我做了一些研究,发现了这一点,但不了解解决方案。有人能在这方面指导我吗


谢谢。

当您试图将32位库加载到64位进程时,会出现此问题。确保您运行的JRuby版本为64位,或者它试图访问的库是为64位操作系统编译的
ruby-v
应该输出版本,例如64位版本看起来像ruby 2.1.4p265(2014-10-27修订版48166)[x86_64-linux]是的,它使用的是64位JRuby<代码>ruby-VJRuby 1.7.4(1.9.3p392)2013-05-16 2390d3b基于Java HotSpot(TM)64位服务器VM 1.6.0_21-b06[linux-amd64]这在我看来很好,看起来Java找错了库的位置。就我个人而言,我以前从未接触过JRuby,我希望其他人能提供帮助。我在
https://jira.codehaus.org/browse/JRUBY-7183
到我的JRUBY选项,它成功了。