abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 20:11 | Zajímavý software

    Desktopové prostředí Xfce bude mít vlastní kompozitor pro Wayland s názvem xfwl4. V programovacím jazyce Rust s využitím stavebních bloků z projektu Smithay jej napíše Brian Tarricone. Úprava stávajícího xfwm4 tak, aby paralelně podporoval X11 i Wayland, se ukázala jako špatná cesta.

    Ladislav Hagara | Komentářů: 2
    včera 19:11 | Komunita

    Desktopové prostředí KDE Plasma 6.8 poběží už pouze nad Waylandem. Vývojáři, kteří s rozhodnutím nesouhlasí, vytvořili fork KDE Plasma s názvem SonicDE (Sonic Desktop Environment) s cílem zachovat a vylepšovat podporu X11.

    Ladislav Hagara | Komentářů: 3
    včera 12:22 | Nová verze

    Byla vydána nová stabilní verze 7.8 dnes již jedenáctiletého webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 144. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 4
    včera 10:33 | Nová verze

    GNU gettext (Wikipedie), tj. sada nástrojů pro psaní vícejazyčných programů, dospěl do verze 1.0. Po více než 30 letech vývoje. Přehled novinek v souboru NEWS.

    Ladislav Hagara | Komentářů: 1
    včera 05:11 | IT novinky

    Chris Kühl (CEO), Christian Brauner (CTO) a Lennart Poettering (Chief Engineer) představili svou společnost Amutable. Má přinést determinismus a ověřitelnou integritu do linuxových systémů.

    Ladislav Hagara | Komentářů: 12
    28.1. 20:11 | Nová verze

    Byla vydána (𝕏) nová verze 26.1 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 26.1 je Witty Woodpecker. Přehled novinek v příspěvku na fóru.

    Ladislav Hagara | Komentářů: 2
    28.1. 15:11 | Zajímavý projekt

    Deník TO spustil vlastní zpravodajský webový portál ToHledej.CZ s internetovým vyhledávačem a bezplatnou e-mailovou schránkou. Dle svého tvrzení nabízí 'Zprávy, komentáře, analýzy bez cenzury' a 'Mail bez šmírování a Velkého bratra'. Rozložením a vizuálním stylem se stránky nápadně podobají portálu Seznam.cz a nejspíše je cílem být jeho alternativou. Z podmínek platformy vyplývá, že portál využívá nespecifikovaný internetový vyhledávač třetí strany.

    NUKE GAZA! 🎆 | Komentářů: 27
    28.1. 14:11 | Zajímavý projekt

    Computer History Museum (Muzeum historie počítačů) zpřístupnilo své sbírky veřejnosti formou online katalogu. Virtuálně si tak můžeme prohlédnout 'rozsáhlou sbírku archivních materiálů, předmětů a historek a seznámit se s vizionáři, inovacemi a neznámými příběhy, které revolučním způsobem změnily náš digitální svět'.

    NUKE GAZA! 🎆 | Komentářů: 12
    28.1. 14:00 | Zajímavý projekt

    Ruský hacker VIK-on si sestavil vlastní 32GB DDR5 RAM modul z čipů získaných z notebookových 16GB SO-DIMM RAM pamětí. Modul běží na 6400 MT/s a celkové náklady byly přibližně 218 dolarů, což je zhruba třetina současné tržní ceny modulů srovnatelných parametrů.

    NUKE GAZA! 🎆 | Komentářů: 15
    28.1. 11:00 | Upozornění

    Národní identitní autorita (NIA), která ovlivňuje přihlašování prostřednictvím NIA ID, MEP, eOP a externích identit (např. BankID), je částečně nedostupná.

    Ladislav Hagara | Komentářů: 9
    Které desktopové prostředí na Linuxu používáte?
     (17%)
     (6%)
     (0%)
     (10%)
     (24%)
     (3%)
     (5%)
     (2%)
     (12%)
     (33%)
    Celkem 668 hlasů
     Komentářů: 22, poslední včera 23:06
    Rozcestník

    Dotaz: python a ... zase disky

    23.7.2014 12:12 Milan
    python a ... zase disky
    Přečteno: 508×

    Zdravím všechny ..

    nedávno jsem se tady dotazoval, jak oddělím zrno od plév (soubory a /*teď už vím, že se to jmenuje */ nody ). Dalším googlením jsem se dostal až ke knihovně pylibparted (stará, neudržovaná, ale dobře se s tím pracuje, no, a hlavně, je v opensuse repu.

    Nicméně ... knihovna má problém ( spíše to bude vlastnost ) s CDROMkou, některé funkce na tom padají, a pro mnou zamýšlený program stejně o práci s CDROMkou neuvažuju.

    Ok, takže zase odděluji zrno od plév. Otázka zní, jak poznám, že nod patří CDROMce ?.

    Jedna možnost se nabízí načíst si /proc/partitions a pylibparted se dotázat na path (pylibparted.PedDevice.getPath() ) k zařízení a tuto cestu najít v partitions, kde máme major minor, podle http://lxr.free-electrons.com/source/include/uapi/linux/major.h?v=3.14 tohoto nějak určit, že dané zařízení je CD, a loopnout se na další zařízení v pořadí (tj, nepokračovat dalším očucháváním CDčka ).

    Tato konstrukce může fungovat, ale pak jsem si uvědomil, že mc a dokonce i ls -l mi prásknou major minor u nodu, tak proč to takto zdaleka obcházet?

    Hm, ale teď nemůžu přijít na to, jak se k major minor v pythonu dostanu.

    os.stat sice vrací st_dev, ale u těch nodů je to míněno asi jako device, kde leží (možná ani to ne, protože to, co se mi vrací, není stejné číslo jako v partitions ... moc o tom nevím).

    Prolézal jsem další možnosti, zkusil jsem googlit, ale rozmanitost ( a nepoužitelnost )  nalezených výsledků mne opět zahnala tam "kde mi rozumějí " :-D ) tak snad jste to pochopili,

    předem díky za nápovědu.

    Milan


    Řešení dotazu:


    Odpovědi

    23.7.2014 14:42 Sten
    Rozbalit Rozbalit vše Re: python a ... zase disky
    Otázka je, jestli opravdu potřebujete zjistit, že je to CD-ROM, nebo stačí zjistit, že tam není médium (můj odhad, proč to padá).

    To první lze zjistit tak, že tomu zařízení pošlete nějaký příkaz pro CD-ROM (doporučuji nějaký informační příkaz, třeba CDROM_GET_CAPABILITY). Pokud to CD-ROM není, tak řekne, že to neumí.

    To druhé je ještě jednodušší. Při pokusu to zařízení otevřít dostanete chybu “No medium found” (ENOMEDIUM).
    23.7.2014 20:44 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: python a ... zase disky
    Aha, no ono to právě kiksuje, když je zasunutý disk .. jinak ta enumerace mechaniku přeskočí. To jsem měl napsat ..

    V pylibparted jsem nenašel žádnou funkci, která by mi řekla : toto je harddisk, toto je CD ... toto je páska a podobně. Atributy major minor jména zařízení by mi to řeklo, ale nevím, jak je získat.
    23.7.2014 15:26 graviton
    Rozbalit Rozbalit vše Re: python a ... zase disky
    Takhle?

    os.stat("/dev/sr0").st_rdev >> 8
    23.7.2014 21:06 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: python a ... zase disky
    ááááá ... teď jste mne dostal ...

    st_rdev je ta kouzelná formulka .. jak jsem to mohl přehlídnout, když jsem koukal na os.stat .. nechápu a vám díky ..

    Milan
    24.7.2014 10:47 graviton
    Rozbalit Rozbalit vše Re: python a ... zase disky
    Ono to ve výsledku z os.stat na rozdíl od ostatních věcí není vidět jako datová položka (asi metoda?), člověk musí zabloudit do dokumentace, aby se dozvěděl, na co že se to má zeptat.
    29.7.2014 14:45 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: python a ... zase disky
    Nakonec jsem to zmastil takto :
    import pylibparted, os (a možná ještě něco)
    def collect_disks( ):
    	result = { }
    
    	devs = pylibparted.probeAllDevices()
    
    	for p in devs :
    		# Device
    		d = pylibparted.PedDevice(p)
    		devpath = d.getPath()
    		devpath_stat = os.stat(devpath)
    		d_mode = devpath_stat.st_mode
    		if (  d_mode & 24576  <> 24576 ) :
    			#print 'Device:', devpath,  ' is not block'
    			continue
    		d_major = devpath_stat.st_rdev >> 8
    		#print d_major
    		if ( not d_major in (8, 3, 22 ) ):
    			#print "Device ",  devpath, ' is not a disk'
    			continue
    		result[ devpath ] = {}
    		model = d.getModel()
    		#print 'Model: ',  model
    		result[ devpath ][ 'model' ] = model
    		result[ devpath ][ 'type' ] = 'D'
    		#print 'Device type :',  d.getType()
    		size = d.getLength()
    		#print 'Size:', size
    		result[ devpath ][ 'size' ] = size
    		ssize =  d.getSectorSize()
    		#print 'Sector size: ', ssize
    		result[ devpath ][ 'ssize' ] = ssize
    		disktype = d.diskProbe()
    		subtype = disktype.getName()
    		#print'Name: ',  subtype
    		result[ devpath ][ 'subtype' ] = subtype
    		c,h,s = d.getBiosCHS()
    		chs = str(c) + '/' + str(h) + '/' + str(s)
    		#print 'BIOS CHS:', chs
    
    		c,h,s = d.getHwCHS()
    		chs = str(c) + '/' + str(h) + '/' + str(s)
    		#print 'HW CHS:', chs
    
    		# Partition table
    		pt = d.diskNew()
    		parts = pt.getPartitions()
    
    		for part in parts :
    			if part.isActive() :
    				part_path = part.getPath()
    				#print ' Partition:', part_path
    				result[ part_path ] = {}
    				result[ part_path ]['type'] = 'P'
    
    				parttype = part.getTypeName()
    				#print ' Type Name:', parttype
    				#print ' ID:', part.getId()
    				result[ part_path ][ 'model' ] = parttype
    				geom = part.getGeometry()
    
    				#print '  Start:', geom.getStart()
    				#print '  End:', geom.getEnd()
    				size = geom.getLength()
    				#print '  Length:', size
    				result[ part_path ][ 'ssize' ] = ssize
    				result[ part_path ][ 'size' ] = size
    				fs = part.getFsType()
    				if fs :
    					#print '  FS:', fs.getName()
    					result[ part_path ]['subtype'] = fs.getName()
    	    # parts
    	# devs
    	return result
    

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.