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í
×

dnes 18:55 | Nová verze

Byla vydána verze 2017.1 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux. S vydáním verze 2016.1 se Kali Linux stal průběžně aktualizovanou distribucí. Aktualizovat jej lze pomocí příkazů "apt update; apt dist-upgrade; reboot".

Ladislav Hagara | Komentářů: 0
dnes 18:22 | Nová verze

Po téměř pěti letech od vydání verze 2.00 byla vydána nová stabilní verze 2.02 systémového zavaděče GNU GRUB (GRand Unified Bootloader). Přehled novinek v souboru NEWS.

Ladislav Hagara | Komentářů: 1
dnes 17:55 | Komunita

Vývojáři Debianu oznámili, že od 1. listopadu letošního roku nebudou jejich archivy dostupné pomocí protokolu FTP. Již v lednu oznámil ukončení podpory FTP kernel.org (The Linux Kernel Archives).

Ladislav Hagara | Komentářů: 0
dnes 17:00 | Bezpečnostní upozornění

V oblíbeném webmailu postaveném na PHP SquirrelMail (Wikipedie) byla nalezena bezpečnostní chyba CVE-2017-7692, jež může být útočníkem zneužita ke spuštění libovolných příkazů a kompletnímu ovládnutí dotčeného serveru. Zranitelnost se týká pouze instancí, kde je pro transport používán Sendmail.

Ladislav Hagara | Komentářů: 1
dnes 13:11 | Zajímavý článek

Soudní dvůr Evropské unie rozhodl (tisková zpráva) ve věci C-527/15: Prodej multimediálního přehrávače, který umožňuje zdarma a jednoduše shlédnout na televizní obrazovce filmy protiprávně zpřístupněné na internetu, může představovat porušení autorského práva.

Ladislav Hagara | Komentářů: 14
včera 13:33 | Pozvánky

Byly stanoveny termíny konferencí LinuxDays 2017 a OpenAlt 2017. Letošní LinuxDays proběhne o víkendu 7. a 8. října v Praze v Dejvicích v prostorách FIT ČVUT. Letošní OpenAlt proběhne o víkendu 4. a 5. listopadu na FIT VUT v Brně.

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

Jiří Eischmann z desktopového týmu Red Hatu se v příspěvku Linuxový desktop: Co vám chybí na svém blogu ptá, co uživatele na Fedora Workstation a na linuxovém desktopu obecně trápí a co by desktopový tým mohl zlepšit. Pokud máte nějaké podněty, napište mu je do komentářů.

Ladislav Hagara | Komentářů: 70
včera 03:33 | Nová verze

Byla vydána nová verze 0.25.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Z novinek lze zmínit například podporu DVB-T2. Další části mpv byly přelicencovány z GPLv2 nebo novější na LGPLv2.1 nebo novější (#2033).

Ladislav Hagara | Komentářů: 0
včera 02:22 | Zajímavý projekt

Na Bundle Stars byla spuštěna akce Dollar Forever Bundle. Za 1 dolar lze získat 24 počítačových her bežících na platformě Steam také v Linuxu.

Ladislav Hagara | Komentářů: 2
24.4. 23:44 | Zajímavý software

Lychee je jedním z open source softwarů pro tvorbu webových fotoalb. Vyžadováno je PHP 5.5 nebo novější a MySQL. Ukázka na stránkách projektu. Zdrojové kódy jsou k dispozici na GitHubu pod open source licencí MIT [reddit].

Ladislav Hagara | Komentářů: 6
Chystáte se pořídit CPU AMD Ryzen?
 (4%)
 (34%)
 (1%)
 (6%)
 (45%)
 (10%)
Celkem 309 hlasů
 Komentářů: 45, poslední dnes 18:25
    Rozcestník

    Dotaz: python a ... zase disky

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

    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: 25 | 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: 25 | 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: 25 | 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.