source: open-sysclone/trunk/build-area/open-sysclone-0.49_01/open-sysclone-gui.install/usr/share/n4d/python-plugins/OpenSysCloneRescue.py @ 647

Last change on this file since 647 was 647, checked in by daduve, 4 years ago

Ading file

File size: 5.1 KB
Line 
1import sys
2import tempfile
3import threading
4import os
5
6import syslog
7
8import subprocess as s
9import re
10import os.path
11
12
13class OpenSysCloneRescue:
14
15        # Templates variables
16        RESCUE_PATH="/net/OpenSysClone/opensysclone-system/pxe-rescue"
17        FLOPPY_FILE="ipxe.dsk"
18        USB_FILE="ipxe.usb"
19        CDROM_FILE="ipxe.iso"
20        DEV_DIRECTORY="/dev"
21       
22
23        def __init__(self):
24                self.excludepaht = ['/','/boot','/home']
25        #def init
26
27
28        def get_devices(self):
29                cmd = s.Popen(["lsblk","-o","RM,TYPE,NAME,SIZE,MODEL"],stdout=s.PIPE)
30                list_output = cmd.stdout.readlines()
31                list_output.pop(0)
32                result = []
33                for item in list_output:
34                        aux = item.strip()
35                       
36                        aux_splited = re.match(r'\s*(\S*)\s*(\S*)\s*(\S*)\s*(\S*)\s*(.*)',aux)
37                        volume = {}
38                        if aux_splited.group(2) == 'disk':
39                                volume['name'] = aux_splited.group(3)
40                                volume['size'] = aux_splited.group(4)
41                                volume['model'] = aux_splited.group(5)
42                                cmd1 = s.Popen(["lsblk",os.path.join('/dev',volume['name']),"-o","MOUNTPOINT"],stdout=s.PIPE)
43                                mountpointsdevice = map(str.strip,cmd1.stdout.readlines())
44                                found = False
45                                for point in self.excludepaht:
46                                        if point in mountpointsdevice:
47                                                found = True
48                                if not found:
49                                        result.append(volume)
50                return {'status':True,'msg':result}
51
52
53        def rescuepxe_floppy (self):
54               
55                #Method to generate floppy rescue boot PXE
56               
57                try:
58                        #File to make floppy disk
59                        BOOT_FILE=OpenSysCloneRescue.RESCUE_PATH+"/"+OpenSysCloneRescue.FLOPPY_FILE
60                       
61                        if os.path.dirname(BOOT_FILE):
62                                syslog.syslog(syslog.LOG_ERR, "DIRECTORY FOR THE FILE %s" %(BOOT_FILE))
63                                os.system('cat %s > /dev/fd0' %(BOOT_FILE))
64                                COMMENT_END = "Waiting while FLOPPY Disk boot is creating"
65                                return [True, str(COMMENT_END)]
66                        else:
67                                COMMENT_END = "File to format %s floppy doesn't exists" %(BOOT_FILE)
68                                return [False,str(COMMENT_END)]
69                               
70                except Exception as e:
71
72                        return [False,str(e)]
73       
74        #def rescuepxe_floppy
75       
76       
77        def rescuepxe_usb (self,DEVICE):
78               
79                #Method to generate USB rescue boot PXE
80                try:
81                        #File to make USB disk
82                        BOOT_FILE=OpenSysCloneRescue.RESCUE_PATH+"/"+OpenSysCloneRescue.USB_FILE
83                        DEV_FILE=OpenSysCloneRescue.DEV_DIRECTORY+"/"+DEVICE
84                       
85                        if os.path.dirname(DEV_FILE):
86                                if os.path.dirname(BOOT_FILE):
87                                        syslog.syslog(syslog.LOG_ERR, "DIRECTORY FOR THE FILE %s and USB directory is %s" %(BOOT_FILE,DEV_FILE))
88                                        os.system('dd if=%s of=%s' %(BOOT_FILE,DEV_FILE))
89                                        os.system ('sync')
90                                        COMMENT_END = "Your USB Disk boot is created"
91                                        return [True, str(COMMENT_END)]
92                                else:
93                                        COMMENT_END = "File to format %s USB doesn't exists" %(BOOT_FILE)
94                                        return [False,str(COMMENT_END)]
95                        else:
96                                        COMMENT_END = "USB directory in %s doesn't exists" %(DEV_FILE)
97                                        return [False,str(COMMENT_END)]
98                                       
99                except Exception as e:
100
101                        return [False,str(e)]
102       
103        #def rescuepxe_usb
104       
105       
106       
107        def rescuepxe_cdrom(self,DEVICE):
108               
109                #Method to generate CDROM rescue boot PXE
110               
111                try:
112                        #File to make CDROM disk
113                        BOOT_FILE=OpenSysCloneRescue.RESCUE_PATH+"/"+OpenSysCloneRescue.CDROM_FILE
114                        DEV_FILE=OpenSysCloneRescue.DEV_DIRECTORY+"/"+DEVICE
115                       
116                        if os.path.dirname(DEV_FILE):
117                                if os.path.dirname(BOOT_FILE):
118                                        syslog.syslog(syslog.LOG_ERR, "DIRECTORY FOR THE FILE %s and CDROM directory is %s" %(BOOT_FILE,DEV_FILE))
119                                        os.system('cdrecord dev=%s -v -eject -speed=4 %s' %(DEV_FILE,BOOT_FILE))
120                                        COMMENT_END = "Waiting while CDROM Disk boot is creating"
121                                        return [True, str(COMMENT_END)]
122                                else:
123                                        COMMENT_END = "File to format %s CDROM doesn't exists" %(BOOT_FILE)
124                                        return [False,str(COMMENT_END)]
125                        else:
126                                        COMMENT_END = "CDROM directory in %s doesn't exists" %(DEV_FILE)
127                                        return [False,str(COMMENT_END)]
128                                       
129                except Exception as e:
130
131                        return [False,str(e)]
132       
133        #def rescuepxe_cdrom
134       
135       
136        def rescuepxe_cdrom_test(self,DEVICE):
137               
138                #Method to generate CDROM rescue boot PXE
139               
140                try:
141                        #File to make CDROM disk
142                        DEV_FILE=OpenSysCloneRescue.DEV_DIRECTORY+"/"+DEVICE
143                       
144                        if os.path.dirname(DEV_FILE):
145                                #Obtengo mediante bash si el disco es grabable o no
146                                #instruction="udisks --show-info /dev/sr0 | grep media | grep optical |cut -d ':' -f 2| sed 's%[[:blank:]]*%%g'"
147                                instruction="udisks --show-info /dev/sr0 | grep media | grep optical |cut -d ':' -f 2"
148                                output=subprocess.check_output(instruction, shell=True)
149                                x='cd_r'
150                                if (x in output):
151                                        COMMENT_END = "It's a CD-Rom"
152                                        return [True, str(COMMENT_END)]
153                                else:
154                                        COMMENT_END = "Is not a CD-Rom in device"
155                                        return [False, str(COMMENT_END)]
156                                       
157                except Exception as e:
158
159                        return [False,str(e)]
160       
161        #def rescuepxe_cdrom_blank_test
162       
163       
164       
165       
166       
167       
168       
169        def rescuepxe_cdrom_blank_test(self,DEVICE):
170               
171                #Method to generate CDROM rescue boot PXE
172               
173                try:
174                        #File to make CDROM disk
175                        DEV_FILE=OpenSysCloneRescue.DEV_DIRECTORY+"/"+DEVICE
176                       
177                        if os.path.dirname(DEV_FILE):
178                                instruction="udisks --show-info /dev/sr0 | grep blank | cut -d ':' -f 2"
179                                output=subprocess.check_output(instruction, shell=True)
180                                x='1'
181                                if (x in output):
182                                        COMMENT_END = "CD-Rom is blank"
183                                        return [True, str(COMMENT_END)]
184                                else:
185                                        COMMENT_END = "CD-Rom is full"
186                                        return [False, str(COMMENT_END)]
187                                       
188                except Exception as e:
189
190                        return [False,str(e)]
191       
192        #def rescuepxe_cdrom_blank_test
Note: See TracBrowser for help on using the repository browser.