Soru çok aptalca özür dilerim ama linux ve python'da yeniyim. Bunun anlamı, bağlı bir usb çubuğu algılayacak ve ona bir dosya yazacak bir python betiği yazmam gerektiğidir. Opensuse'u kullanıyorum (ancak ideal durumda herhangi bir linux distro ile script shoild çalışması). Mevcut sürüm, usb takılıysa ve USB takılıysa bir dosya yazabilir. Ama makinemde usb sadece dosya yöneticisinde göz atarsam monte edilir. Bu USB bir parça olarak algılanana kadar, ancak bağlama noktası olmadan. Bu yüzden, sistemi USB'ye monte etmek için nasıl zorlayabilirim ya da devname veya devpath kullanarak bir dosyayı nasıl yazabilirim ya da hal yöneticisinden alabileceğim başka bir bilgiyi nasıl yazabilirim. Bir kök izin gerektirir çünkü komutunu "montaj" kullanamazsınızpython on linux ile dosyaya yazmak
Basitleştirilmiş Kaynak kodu:
import dbus, gobject, os
class DeviceAddedListener:
def __init__(self):
self.bus = dbus.SystemBus()
self.hal_manager_obj = self.bus.get_object("org.freedesktop.Hal", "/org/freedesktop/Hal/Manager")
self.hal_manager = dbus.Interface(self.hal_manager_obj, "org.freedesktop.Hal.Manager")
self.hal_manager.connect_to_signal("DeviceAdded", self.added)
def show(self, name, udi):
d_object = self.bus.get_object('org.freedesktop.Hal', udi)
d_interface = dbus.Interface(d_object,'org.freedesktop.Hal.Device')
if d_interface.QueryCapability("volume"):
print name
props = [ "block.device", "volume.label", "volume.is_mounted", "volume.mount_point", "volume.size"]
for p in props:
print '\t', p, " = ",
try:
print d_interface.GetProperty(p)
except:
print "Fail"
def added(self, udi):
self.show("DeviceAdded", udi)
self.bus.add_signal_receiver(self.property_modified,
"PropertyModified",
"org.freedesktop.Hal.Device",
"org.freedesktop.Hal",
udi,
path_keyword = "sending_device")
def property_modified(self, numupdates, updates, sending_device = None):
self.show("PropertyModified", sending_device)
if __name__ == '__main__':
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
loop = gobject.MainLoop()
DeviceAddedListener()
print "running"
loop.run()
usb usb takılı ve takılı
DeviceAdded
block.device = /dev/sdb1
volume.label = @
volume.is_mounted = 0
volume.mount_point =
volume.size = 4009722368
çıktı takılı çıktı
block.device = /dev/sdb1
volume.label = @
volume.is_mounted = 1
volume.mount_point = /media/@
volume.size = 4009722368
Yardımlarınız için teşekkürler!
Neden 'mount' kullanamazsınız? Eğer 'mount' işe yaramazsa, çözümünüzü neden istiyorsunuz? –
Montajı kullandığımda "mount: only root bunu yapabilirim" mesajım var – user1485818