Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: jak vypsat seznam oddilu  (Přečteno 5866 krát)

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
jak vypsat seznam oddilu
« kdy: 02 Února 2011, 01:14:55 »
Zdravim

Snazim se v ramci uceni pythonu vylepsit skript pro mountovani Truecrypt jednotek v XBMC. Problem je ze potrebuju seznam oddilu v systemu.
To se sice da krasne poresit i primo v bashi pomoci :
Kód: [Vybrat]
cat /proc/partitions | grep sd | awk '{ print $4 }'

jenze vypis je :
Kód: [Vybrat]
sda
sda1
sda2
sda5
sdb
sdb1
No a ted jak INTELIGENTNE vyhodit sda a sdb jelikoz se nejedna ooddily ale disky a jak vytridit sda2 coz je logicky oddil ?

Navic si nejsem jisty tim | grep sd, neni to tak ze pametove karty jsou pod /dev/mmcblk nebo podobne ?

Primo v pythonu jsem nasel mozna elegantnejsi reseni :
Kód: [Vybrat]
import os
fh = file('/proc/partitions')

fh.readline() # eat the header
fh.readline() # eat the blank line

partitions = [line.split()[-1] for line in fh.readlines()]

Jde mi spis o princip nez o to jak to naprogramovat. Muzu treba vyhodit vsechny triznakove identifikatory sda,sdb,sdc ... ale to je taky trochu hloupa metoda.
Takze spis hledam jak identifikovat jestli sdxy je fyzicky oddil.

Diky za tipy K
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: jak vypsat seznam oddilu
« Odpověď #1 kdy: 02 Února 2011, 01:33:56 »
Kód: [Vybrat]
cat /proc/partitions | awk '{ print $4 }' | grep -E '^.*[0-9]$'?

EDIT: sorry, pul druhe rano, ten logicky oddil jsem nejak preskocil... jak pise ETNyx, bude potreba nejaky jiny vypis

EDIT2: ten jiny vypis by mohl byt blkid
« Poslední změna: 02 Února 2011, 09:27:49 od MacHala »
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re: jak vypsat seznam oddilu
« Odpověď #2 kdy: 02 Února 2011, 07:49:45 »
Kód: [Vybrat]
cat /proc/partitions | awk '{ print $4 }' | grep -E '^.*[0-9]$'?
Furt tam je ten logickej oddíl :-)


Kód: [Vybrat]
fdisk -l | grep -E '^/dev/' | grep -v Rozšířený | grep -v Extended | awk '{print $1}'nicméně to asi bude chtít roota nebo sudo,...
jabber: etnyx@jabbim.cz

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: jak vypsat seznam oddilu
« Odpověď #3 kdy: 02 Února 2011, 10:26:33 »
Zdravim

Snazim se v ramci uceni pythonu vylepsit skript pro mountovani Truecrypt jednotek v XBMC. Problem je ze potrebuju seznam oddilu v systemu.
To se sice da krasne poresit i primo v bashi pomoci :
Kód: [Vybrat]
cat /proc/partitions | grep sd | awk '{ print $4 }'

jenze vypis je :
Kód: [Vybrat]
sda
sda1
sda2
sda5
sdb
sdb1
No a ted jak INTELIGENTNE vyhodit sda a sdb jelikoz se nejedna ooddily ale disky a jak vytridit sda2 coz je logicky oddil ?

Navic si nejsem jisty tim | grep sd, neni to tak ze pametove karty jsou pod /dev/mmcblk nebo podobne ?
.
.
.

Je to trochu prasarna, ale co treba zkusit:
Kód: [Vybrat]
df | grep /dev | grep -v none | awk {'print $1'}
« Poslední změna: 02 Února 2011, 10:28:17 od Uran »
"Pouze text v MS Wordu je opravdu čistý, příteli."

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: jak vypsat seznam oddilu
« Odpověď #4 kdy: 02 Února 2011, 14:48:29 »
Tak v tomto případě bych to nedramatizoval

Kód: [Vybrat]
cat /proc/partitions | grep -o sd..

Edit: no dobrá, taky mi asi něco uniklo, snad později :)
« Poslední změna: 02 Února 2011, 15:03:59 od GdH »

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re: jak vypsat seznam oddilu
« Odpověď #5 kdy: 02 Února 2011, 18:08:52 »
Je to trochu prasarna, ale co treba zkusit:
Kód: [Vybrat]
df | grep /dev | grep -v none | awk {'print $1'}

pravděpodobně bude nežádoucí, že df vrací i jiné věci, než-li disky (tmpfs, udev, shm)

BTW: když o tom tak přemýšíl tak přes fdisk to taky není ideální, protože pokud budou disky v raidu tak vrati jak raid tak jednotlive oddily disku ???
jabber: etnyx@jabbim.cz

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
Re: jak vypsat seznam oddilu
« Odpověď #6 kdy: 03 Února 2011, 00:31:01 »
Zdravim

Predne diky moc vsem za tipy. Dival jsem se primo do Truecryptu a ten zobrazi i disky (sda,sdb...) ale vynecha logicke oddily. Jde mi o to ze se snazim ten skript upravit aby  ho zvladla pouzivat i rodina ktera je celkem IT analfabeti, takze nejake sda1 nebo mmcblk je pro ne dost matouci. Takze hledam jak zjistit informaci o labelu - ten se ale lisi podle typu - velikosti, pripojnem bodu a jestli je dany oddil logicky nebo ne.
A treba kdyz u me situace vypada nasledovne :
Kód: [Vybrat]
sudo fdisk -l

Disk /dev/sda: 60,0 GB, 60 011 642 880 bajtů
hlav: 255, sektorů na stopu: 63, cylindrů: 7 296
Jednotky = cylindry po 16065 * 512 = 8 225 280 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Identifikátor disku: 0x2527a2c7

Zařízení Zavádět   Začátek       Konec    Bloky    Id  Systém
/dev/sda1   *           1        6992    56163208+  83  Linux
/dev/sda2            6993        7296     2441849+   5  Rozšířený
/dev/sda5            6993        7296     2441848+  82  Linux swap/Solaris

Disk /dev/sdb: 65 MB, 65 536 000 bajtů
hlav: 8, sektorů na stopu: 32, cylindrů: 500
Jednotky = cylindry po 256 * 512 = 131 072 bajtech
Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů
Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů
Identifikátor disku: 0x0006b58f

Zařízení Zavádět   Začátek       Konec    Bloky    Id  Systém
/dev/sdb1   *           1         500       63972+  83  Linux

ale fd poskytne :
Kód: [Vybrat]
/dev/sda1              53G  3,7G   47G   8% /
none                  491M  268K  491M   1% /dev
none                  497M  244K  496M   1% /dev/shm
none                  497M   80K  497M   1% /var/run
none                  497M     0  497M   0% /var/lock

Vubec nezobrazi velikost sda2, sda5 co je docela zajimave voditko (malokdo neznaly vi v jakem poradi ma oddily ale obvykle zna jejich velikost)

Pro uplnost pridavam cast toho python-skryptu kde se zjistuji oddily a jejich velikost :
Kód: [Vybrat]
# Get partition info
part_info = []
for i,v in enumerate(partitions):
size = ''.join(self.runcmd("df -h | grep "+v+" | awk '{ print $2 }'")).replace('\n',' ')
mountpoint = ''.join(self.runcmd("df -h | grep "+v+" | awk '{ print $6 }'")).replace('\n',' ')
part_info.append([v,size,mountpoint])

part_info_text = part_info
for i,v in enumerate(part_info):
part_info_text[i][0] = v[0]
if v[0].isalpha() or v[1] == '': # == drives ex. sda OR unmounted partitions -> df is unable to get size
part_info_text[i][1] = ''
part_info_text[i][2] = ''
else:
part_info_text[i][1] = ' | size: '+v[1]
part_info_text[i][2] = ' | mountpoint: '+v[2]

Kazdopadne Truecrypt zvladne zobrazit ne-logicke oddily a jejich velikost.


EDIT : filesystem umi i df : df -hT
« Poslední změna: 03 Února 2011, 00:34:29 od karlitos »
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
Re: jak vypsat seznam oddilu
« Odpověď #7 kdy: 03 Února 2011, 00:52:36 »
Halelujah praise the lord : http://code.google.com/p/inxi/
Kód: [Vybrat]
./inxi -D
Disks:     HDD Total Size: 60.1GB (6.4% used) 1: /dev/sda HTS421260H9AT00 60.0GB
           2: /dev/sdb 5in1_Adapter 0.1GB

./inxi -pl
Partition: ID:/ size: 53G used: 3.7G (8%) fs: ext4 dev: /dev/sda1 label: linux
           ID:swap-1 size: 2.50GB used: 0.02GB (1%) fs: swap dev: /dev/sda5 label: N/A

Ale kam zmizela pametova karta sdb  :-[ saaakrys

EDIT : kdo umi cist help ma jasnou vyhodu  ;D
(pripojil jsem jeste USB disk pro testovani)
Kód: [Vybrat]
./inxi -plo
Partition: ID:/ size: 53G used: 3.7G (8%) fs: ext4 dev: /dev/sda1 label: linux
           ID:/media/KINGSTON size: 62M used: 4.1M (7%) fs: vfat dev: /dev/sdc1 label: KINGSTON
           ID:swap-1 size: 2.50GB used: 0.02GB (1%) fs: swap dev: /dev/sda5 label: N/A
Unmounted: ID: /dev/sdb1 size: 0.07G label: N/A uuid: ab91ede4-1553-4d81-a349-79f5394de511 fs: ext4

Takze tim mame VSECHNY data bez roota a ted jak to roztridit ?
Navic inxi potrebuje gawk - lze treba do slozky s inxi dat binarku a odkazat inxi na ni aby se gawk nemuselo pro pouzivani instalovat ?
« Poslední změna: 03 Února 2011, 01:11:32 od karlitos »
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
Re: jak vypsat seznam oddilu
« Odpověď #8 kdy: 03 Února 2011, 09:56:10 »
Bon Apetit !!
Kód: [Vybrat]
# partprobe -ds
/dev/sda: msdos partitions 1 2 3 <5 6>
/dev/sdb: msdos partitions 1

Diky ale opet to potrebuju spoustet alespon se sudem. Zkusim si poradit s tim inxi, tady uz jde spis o to zjistit jak zadat pythonu aby se spustil script v relativnim umisteni atd ...
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re: jak vypsat seznam oddilu
« Odpověď #9 kdy: 03 Února 2011, 10:32:23 »
Takze tim mame VSECHNY data bez roota a ted jak to roztridit ?
Navic inxi potrebuje gawk - lze treba do slozky s inxi dat binarku a odkazat inxi na ni aby se gawk nemuselo pro pouzivani instalovat ?

Ty stále hledáš "čistá řešení" a pak vezmeš kód, který má pět tisíc řádků, abys z něj využil dva a ještě řešíš jako ho očůrat. Tomu nerozumím ;)

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
Re: jak vypsat seznam oddilu
« Odpověď #10 kdy: 03 Února 2011, 11:08:07 »
Dobre vysvetlim :
Jako ciste reseni jsem myslel takove, ktere bude zcela univerzalni. Vykuchal jsem pametovou kartu z mobilu a strcil ji do notasu a inxi mi vypise :
Kód: [Vybrat]
Partition: ID:/ size: 53G used: 3.6G (8%) fs: ext4 dev: /dev/sda1 label: linux
           ID:/var/lib/ureadahead/debugfs size: 53G used: 3.6G (8%) fs: debugfs dev: N/A label: N/A
           ID:/media/KINGSTON size: 62M used: 4.1M (7%) fs: vfat dev: /dev/sdb1 label: KINGSTON
           ID:/media/161F-C18E size: 1.9G used: 361M (19%) fs: vfat dev: /dev/mmcblk0p1 label: N/A
           ID:swap-1 size: 2.50GB used: 0.00GB (0%) fs: swap dev: /dev/sda5 label: N/A
Unmounted: ID: /dev/sdc1 size: 0.07G label: N/A uuid: ab91ede4-1553-4d81-a349-79f5394de511
           ID: /dev/mmcblk0 size: 2.01G label: N/A uuid: N/A
Pokud bych jak GdH navrhoval pouzil neco ve smyslu cat /proc/partitions | grep -o sd.. tak mi mmcblk0 unikne. Takze resenim by bylo nastudovat si jak vsechny soucasne distribuce pripojuji disky a externi media a udelat nejake krutoprisne hledani vech moznych retezcu ... No a to panove co vyvinuli inxi udelali za me -  a jak se zda dobre a univerzalne.
Samozrejme naprosty purismus by byl najit si v tom inxi cast ktera identifikuje disky a oddily a pouzit jen tu ... dobre, tak to proste nedavam  :). Pouzit inxi a vzit si jen to co me zajima zda se fuguje  univerzalne a navic mi jeste da veskere informace najednou.

Srozumenni ?  :)

S tim ocuranim bych to nevidel tak dramaticky kdo si nainstaluje gawk tak je v pohode. Ale jedna se o skript k xbmc a ted by mel fungovat out-of-the-box, takze gawk v nejake aktualni verzi by mel byt prilozen.
« Poslední změna: 03 Února 2011, 11:10:46 od karlitos »
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: jak vypsat seznam oddilu
« Odpověď #11 kdy: 03 Února 2011, 18:01:25 »
no, awk jako soucast systemu definuje LSB Core Specification a nevim o zadnem linuxovem distru ktere by pouzivalo jinou implementaci awk nez gawk => opravdu by me prekvapilo, kdyby v xbmc defaultne nebyl
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

karlitos

  • Stálý člen
  • **
  • Příspěvků: 1057
  • Bioinformatics - solutions in-silico
    • homepage
Re: jak vypsat seznam oddilu
« Odpověď #12 kdy: 03 Února 2011, 18:04:57 »
No xbmc jsem netestoval to je pravda, zatim jsem to zkousel z Lubuntu 10.10. a tam se musi gawk doinstalovat.
Lenovo ThinkCentre A61 912073G
Athlon X2 5000+ 4GB RAM Nvidia Geforce 9500GT
Linux Mint 9 Isadora , Win7 64Bit

starenka

  • Stálý člen
  • **
  • Příspěvků: 1276
  • Karma: plynová [zapalovač] [hasičák]
    • /home/starenka
Re: jak vypsat seznam oddilu
« Odpověď #13 kdy: 04 Února 2011, 15:12:08 »
Primo v pythonu jsem nasel mozna elegantnejsi reseni :
Kód: [Vybrat]
import os
fh = file('/proc/partitions')

fh.readline() # eat the header
fh.readline() # eat the blank line

partitions = [line.split()[-1] for line in fh.readlines()]

imo spis takhle

Kód: [Vybrat]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

f = open('/proc/partitions')
partitions = [line.split()[-1].strip() for line in f.readlines()[2:]]
f.close()
mojenka | blozinek v2 | starej blozinek | krotim hady za penize | UJ! Kalužátor

Debian testing vrní v Thinkpadu X200/bedně/EEE 900a, MasoX Tiger v lampe

 

Provoz zaštiťuje spolek OpenAlt.