1

我需要检测所有可用的 USB 驱动器及其信息。主要我对 USB 设备(闪存驱动器和外部硬盘)、挂载点、uuid、总大小、可用空间、标签以及是否挂载 USB 感兴趣。我认为 ruby​​-dbus 与 udisk 一起使用会更好。所以安装没有错误。但是我无法继续进行。我需要在linux上使用它。这是示例代码

#!/usr/bin/env ruby
require 'rubygems'
require 'dbus'
bus = DBus::SystemBus.instance
rb_service = bus.service("org.freedesktop.UDisks")
rb_udisk = rb_service.object("/org/freedesktop/UDisks")
rb_udisk.introspect
rb_udisk_iface = rb_udisk["org.freedesktop.UDisks.Device"]
puts rb_udisk_iface.DeviceIsRemovable

但是我得到这个错误未定义的方法'DeviceIsRemovable' for nil:NilClass (NoMethodError) 我不明白。有人可以帮助我吗?有用的链接:- python 和 udisk http://mindbending.org/en/python-and-udisks-part-5 python udisk - 枚举设备信息...

任何帮助表示赞赏。

4

1 回答 1

1
#!/usr/bin/env ruby

require 'dbus'

bus = DBus::SystemBus.instance
udisk_service = bus.service("org.freedesktop.UDisks")
udisk_udisk = udisk_service.object("/org/freedesktop/UDisks")
udisk_udisk.introspect
udisk_udisk.default_iface = "org.freedesktop.UDisks"
disk_list = udisk_udisk.EnumerateDevices[0]
    disk_list.each { |disk|
    udisk_udisk = udisk_service.object("#{disk}")
    udisk_udisk.introspect
    udisk_udisk_i = udisk_udisk["org.freedesktop.UDisks.Device"]
    if udisk_udisk_i["DriveConnectionInterface"] == "usb" && udisk_udisk_i["DeviceIsPartition"]
    #puts disk #Debug
    puts "Device file: #{udisk_udisk_i["DeviceFile"]}"
    puts "Is device mounted: #{udisk_udisk_i["DeviceIsMounted"]}"
    puts "Is device mount path: #{udisk_udisk_i["DeviceMountPaths"]}"
    puts "Device uuid: #{udisk_udisk_i["IdUuid"]}"
    puts "Device label: #{udisk_udisk_i["IdLabel"]}"
    puts ""
    end
    }
于 2013-04-07T01:46:58.523 回答