Commit initial
This commit is contained in:
128
test/ndmt
Executable file
128
test/ndmt
Executable file
@ -0,0 +1,128 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
# Variables globales
|
||||
selectedDiskPath = ""
|
||||
selectedMountPoint = ""
|
||||
mountFlag = False
|
||||
|
||||
|
||||
# Fonction SelectDisk : sélectionne une image disque
|
||||
def SelectDisk(diskPath):
|
||||
global selectedDiskPath
|
||||
global mountFlag
|
||||
|
||||
if mountFlag == True:
|
||||
print("Error : you must umount the current partition before select a new disk")
|
||||
return -1
|
||||
|
||||
if os.path.isfile(diskPath) == True:
|
||||
selectedDiskPath = diskPath
|
||||
return 0
|
||||
else:
|
||||
print("Error : invalid disk path")
|
||||
return -2
|
||||
|
||||
|
||||
# Fonction SelectMountPoint : sélectionne un répertoire pour le montage
|
||||
def SelectMountPoint(dirPath):
|
||||
global selectedMountPoint
|
||||
global mountFlag
|
||||
|
||||
if mountFlag == True:
|
||||
print("Error : you must umount the current partition before select a new mount point")
|
||||
return -1
|
||||
|
||||
if os.path.isdir(dirPath) == True:
|
||||
selectedMountPoint = dirPath
|
||||
return 0
|
||||
else:
|
||||
print("Error : invalid dir path")
|
||||
return -2
|
||||
|
||||
|
||||
# Fonction MountPart : Monte dans le répertoire sélectionné la partition <partNum> du disque sélectionné
|
||||
def MountPart(partNum):
|
||||
global selectedDiskPath
|
||||
global selectedMountPoint
|
||||
global mountFlag
|
||||
|
||||
if mountFlag == True:
|
||||
print("Error : a partition is aready mounted")
|
||||
return -1
|
||||
|
||||
if partNum >= 0 and partNum < 4:
|
||||
uid = str(os.getuid())
|
||||
gid = str(os.getgid())
|
||||
off = subprocess.check_output(["tools/readpt", selectedDiskPath, str(partNum), "start_LBA"], stderr=None)
|
||||
partOffset = str(int(off) * 512)
|
||||
mountOptions = "loop,rw,offset={0},users,uid={1},gid={2}".format(partOffset, uid, gid)
|
||||
if subprocess.call(["/usr/bin/sudo", "/bin/mount", "-o", mountOptions, selectedDiskPath, selectedMountPoint], stdin=None, stdout=None, stderr=None) == 0:
|
||||
time.sleep(1)
|
||||
print("Partition ", partNum, " mounted")
|
||||
mountFlag = True
|
||||
return 0
|
||||
else:
|
||||
print("Error : unable to mount partition ", partNum)
|
||||
return -3
|
||||
else:
|
||||
return -2
|
||||
|
||||
|
||||
# Fonction UmountPart : Démonte la partition montée
|
||||
def UmountPart():
|
||||
global selectedMountPoint
|
||||
global mountFlag
|
||||
|
||||
if mountFlag == False:
|
||||
print("Error : no partition mounted")
|
||||
return -1
|
||||
|
||||
if subprocess.call(["/usr/bin/sudo", "/bin/umount", selectedMountPoint], stdin=None, stdout=None, stderr=None) == 0:
|
||||
time.sleep(1)
|
||||
print("Umount partition")
|
||||
mountFlag = False
|
||||
return 0
|
||||
else:
|
||||
print("Error : unable to umount partition")
|
||||
return -2
|
||||
|
||||
|
||||
|
||||
# Programme principal
|
||||
print("\n########################################")
|
||||
print("### NutsOS Disk Management Tool v1.0 ###")
|
||||
print("########################################\n")
|
||||
quit = False
|
||||
while quit != True:
|
||||
cmd = input("#> ")
|
||||
args = cmd.split(sep=' ')
|
||||
if args[0] == "seldisk":
|
||||
if len(args) == 2:
|
||||
SelectDisk(args[1])
|
||||
else:
|
||||
print("Command error : seldisk <disk>")
|
||||
elif args[0] == "selmnt":
|
||||
if len(args) == 2:
|
||||
SelectMountPoint(args[1])
|
||||
else:
|
||||
print("Command error : selmnt <mountpoint>")
|
||||
elif args[0] == "mount":
|
||||
if len(args) == 2:
|
||||
MountPart(int(args[1]))
|
||||
else:
|
||||
print("Command error : mount <partition>")
|
||||
elif args[0] == "umount":
|
||||
if len(args) == 1:
|
||||
UmountPart()
|
||||
else:
|
||||
print("Command error : umount")
|
||||
elif args[0] == "quit":
|
||||
quit = True
|
||||
if mountFlag == True:
|
||||
UmountPart()
|
||||
else:
|
||||
print("Command error : unknown command")
|
Reference in New Issue
Block a user