Difference between revisions of "OPS435 Python Assignment 2 C"

From CDOT Wiki
Jump to: navigation, search
(Overview)
(Module and function documentation)
Line 29: Line 29:
 
== Module and function documentation ==
 
== Module and function documentation ==
 
Use the python docstring to provide embedded documentation for the module "partinfo.py" and the functions in it.
 
Use the python docstring to provide embedded documentation for the module "partinfo.py" and the functions in it.
 +
 +
== Sample Python codes ==
 +
The following sample python code reads and display primary partition on a given physical storage device with MBR partition scheme:
 +
<code>
 +
#! /usr/bin/python
 +
# read and display partition info
 +
# on a physical disk or disk image
 +
#
 +
import struct
 +
import sys
 +
 +
# ask the user for disk file name
 +
# if not provided on the command line
 +
no_arg = len(sys.argv) # one is for command only
 +
 +
if no_arg <= 1:
 +
  diskfile=raw_input("Disk file name please: ")
 +
else:
 +
  diskfile=sys.argv[1]
 +
 +
# verify that the file exist
 +
# notify when file is missing
 +
 +
try:
 +
    f=open(diskfile, 'rb')
 +
    f.seek(446)
 +
 +
    ptt = f.read(64)
 +
    pte1 = ptt[0:16]
 +
    pte2 = ptt[16:32]
 +
    pte3 = ptt[32:48]
 +
    pte4 = ptt[48:64]
 +
    tfmt='<b3sb3sLL'
 +
 +
    t1 = struct.unpack(tfmt,pte1)
 +
    t2 = struct.unpack(tfmt,pte2)
 +
    t3 = struct.unpack(tfmt,pte3)
 +
    t4 = struct.unpack(tfmt,pte4)
 +
    print "partition #","boot","start","length","type"
 +
    print "partition 1:",t1[0],t1[4], t1[5], t1[2]
 +
    print "partition 2:",t2[0],t2[4], t2[5], t2[2]
 +
    print "partition 3:",t3[0], t3[4], t3[5], t3[2]
 +
    print "partition 4:",t4[0], t4[4], t4[5], t4[2]
 +
 +
except IOError:
 +
    print "File missing."
 +
</code>
  
 
= Resources =
 
= Resources =

Revision as of 01:09, 3 April 2018

Overview

In order to use a physical storage device (e.g. Hard Disk, USB Flash memeory, SSD, etc.), the first step is to create partition(s) on it. There many different ways to partition a physical storage device. The two most common partition schemes used on Intel based micro-computer systems are MBR and GPT. Detail about the MBR partition scheme can be found here, and GPT partition scheme can be found at [1].

On most Linux systems, fdisk or parted can be used to create, view, and manage MBR and GPT partition.

The task for this assignment is to write a python module named "partinfo.py", which contains at least three functions: part_scheme(), mbr_part(), gpt_part(), which can be used to retrieve partition information from a specified physical storage device.

Instruction

Module name, function names, function parameter(s) and return values

Name your python module as "partinfo.py". The module should contains at least the following 3 functions:

  • part_scheme() - which when called with a valid physical storage device name, will return the partition scheme used on the device. The return value should only be
    • None - no valid partition scheme found on the device
    • MBR - MBR partitions is/are found on the device
    • GPT - GUID partitions is/are found on the device
  • mbr_part() - which when called with a valid physical storage device name, will return all the partitions (primary, extended, and logical) found on the device. Each partition information return must contain the following fields:
    • partition number
    • partition flag (bootable or not)
    • partition type
    • start sector number (in LBA mode)
    • size of partition in sectors
  • gpt_part() - which when called with a valid physical storage device name, will return all the partitions found on the device. Each partition information return must contain the following fields:
    • Partition type GUID
    • Unique partition GUID
    • First LBA sector of the partition
    • Last LBA sector of the partition
    • Attribute flags
    • Partition name

Module and function documentation

Use the python docstring to provide embedded documentation for the module "partinfo.py" and the functions in it.

Sample Python codes

The following sample python code reads and display primary partition on a given physical storage device with MBR partition scheme:

  1. ! /usr/bin/python
  2. read and display partition info
  3. on a physical disk or disk image

import struct import sys

  1. ask the user for disk file name
  2. if not provided on the command line

no_arg = len(sys.argv) # one is for command only

if no_arg <= 1:

 diskfile=raw_input("Disk file name please: ")

else:

 diskfile=sys.argv[1]
  1. verify that the file exist
  2. notify when file is missing

try:

   f=open(diskfile, 'rb')
   f.seek(446)
   ptt = f.read(64)
   pte1 = ptt[0:16]
   pte2 = ptt[16:32]
   pte3 = ptt[32:48]
   pte4 = ptt[48:64]
   tfmt='<b3sb3sLL'
   t1 = struct.unpack(tfmt,pte1)
   t2 = struct.unpack(tfmt,pte2)
   t3 = struct.unpack(tfmt,pte3)
   t4 = struct.unpack(tfmt,pte4)
   print "partition #","boot","start","length","type"
   print "partition 1:",t1[0],t1[4], t1[5], t1[2]
   print "partition 2:",t2[0],t2[4], t2[5], t2[2]
   print "partition 3:",t3[0], t3[4], t3[5], t3[2]
   print "partition 4:",t4[0], t4[4], t4[5], t4[2]

except IOError:

   print "File missing."

Resources