1

利用可能なすべての USB ドライブとその情報を検出する必要があります。主に、USB デバイス (フラッシュ ドライブと外付けハード ディスク)、マウント ポイント、uuid、合計サイズ、使用可能なスペース、ラベル、および USB がマウントされているかどうかに関心があります。udiskを使うならruby-dbusの方がいいと思いました。ということで、エラーなくインストール。しかし、私はそれ以上先に進むことができません。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

しかし、私は理解していない nil:NilClass (NoMethodError) に対してこのエラー undefined method `DeviceIsRemovable' を取得します。誰かがこれについて私を助けることができますか? 便利なリンク:- python と udisk http://mindbending.org/en/python-and-udisks-part-5 python udisks - デバイス情報の列挙...

どんな助けでも大歓迎です。

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 に答える