source: lmd/trunk/fuentes/lmd-server.install/usr/sbin/ltsp-import-export @ 392

Last change on this file since 392 was 392, checked in by hectorgh, 4 years ago

adding project files

  • Property svn:executable set to *
File size: 3.8 KB
Line 
1#!/usr/bin/env python
2
3import os
4import sys
5import glob
6import subprocess
7import json
8
9class LtspIE:
10
11        def __init__(self):
12               
13                self.ltsp_path="/opt/ltsp/"
14                self.ltsp_tmp=self.ltsp_path+".tmp/"
15                self.image_config="/etc/ltsp/images/"
16               
17        #def init
18       
19        def test_root(self):
20               
21                try:
22                        f=open("/run/ltsp-import-export","w")
23                        f.write(str(os.getpid()))
24                        f.close()
25                except:
26                        return False
27                       
28                return True
29               
30        #def test_root
31       
32        def usage(self):
33               
34                print("USAGE:\n\tltsp-import-export import|export TARGZ_FILE_PATH CHROOT_NAME [NEW_CHROOT_NAME]\n\t[!] Parameter order matters! [!]\n")
35                sys.exit(1)
36               
37        #def
38       
39        def parse_args(self,args):
40               
41                if len(args)<4:
42                        self.usage()
43                       
44                if args[1] not in ["import","export"]:
45                        self.usage()
46
47                if not self.test_root():
48                        print("[!] You need root privileges to run this program [!]")
49                        sys.exit(1)
50
51                file_path=args[2]
52                chroot_name=args[3]
53                use_xterm=False
54               
55                try:
56                        new_chroot_name=args[4]
57                except:
58                        new_chroot_name=None
59                       
60                if args[1]=="import":
61                        self.import_image(file_path,chroot_name,new_chroot_name)
62                       
63                if args[1]=="export":
64                               
65                        self.export_image(file_path,chroot_name,False)
66                               
67        #def parse_args
68
69        def import_image(self,file_path,chroot_name,new_chroot_name=None):
70
71                if not os.path.exists(file_path):
72                        self.usage()
73               
74               
75                if new_chroot_name==None:
76               
77                        cmd="echo;\
78                        echo [LtspIE] Extracting file...;\
79                        tar -xvzf " + file_path + " -C " + self.ltsp_path + " ;\
80                        mv "+self.ltsp_path+chroot_name+"/"+chroot_name+".json "+self.image_config+";\
81                        echo [LtspIE] Updating kernels...;\
82                        ltsp-update-kernels "+chroot_name+";\
83                        echo [LtspIE] Generating keys...;\
84                        ltsp-update-sshkeys;\
85                        echo [LtspIE]Updating image...;\
86                        ltsp-update-image "+chroot_name+";\
87                        echo [LtspIE] DONE;\
88                        echo;\
89                        "
90                       
91                        os.system(cmd)
92                       
93                else:
94                       
95                        cmd="echo;\
96                        mkdir -p " + self.ltsp_tmp + ";\
97                        echo [LtspIE] Extracting file...;\
98                        tar -xvzf " + file_path + " -C " + self.ltsp_tmp + " ;\
99                        mv "+self.ltsp_tmp+chroot_name+" "+self.ltsp_path+new_chroot_name+ " ;\
100                        mv "+self.ltsp_path+new_chroot_name+"/"+chroot_name+".json "+self.image_config+new_chroot_name+".json ;\
101                        echo [LtspIE] Updating kernels...;\
102                        ltsp-update-kernels "+new_chroot_name+";\
103                        echo [LtspIE] Generating keys...;\
104                        ltsp-update-sshkeys;\
105                        echo [LtspIE]Updating image...;\
106                        ltsp-update-image "+new_chroot_name+";\
107                        echo [LtspIE] DONE;\
108                        echo;\
109                        "
110                       
111                        os.system(cmd)
112               
113                        file_name=self.image_config+new_chroot_name+".json"
114               
115                        f=open(file_name,"r")
116                        tmp=json.load(f)
117                        f.close()
118                        tmp["id"]=new_chroot_name
119                        tmp["name"]=new_chroot_name
120                        #tmp["status"]="working"
121                       
122                        f=open(file_name,"w")
123                        data=unicode(json.dumps(tmp,indent=4,encoding="utf-8",ensure_ascii=False)).encode("utf-8")
124                        f.write(data)
125                        f.close()
126                       
127               
128                return 0
129
130        #def import_image
131       
132        def export_image(self,file_path,chroot_name,use_xterm=False):
133               
134                cmd="echo;\
135                echo [LtspIE] Copying configuration file...;\
136                cp " + self.image_config + chroot_name + ".json " + self.ltsp_path +chroot_name+";\
137                echo [LtspIE] Creating tar.gz file...;\
138                echo [LtspIE] tar -cvzf "+ file_path + " --one-file-system --exclude=/lost+found -C " + self.ltsp_path  + " " + chroot_name + " ;\
139                tar -cvzf "+ file_path + " --one-file-system --exclude=/lost+found -C " + self.ltsp_path  + " " + chroot_name + " ;\
140                echo [LtspIE] Image saved : " + file_path + " \
141                echo [LtspIE] Finished;\
142                echo;\
143                "
144               
145                if use_xterm:
146                        cmd='xterm -T "Export LTSP Image" -e "' + cmd + 'read;"'
147               
148                try:
149                        output=subprocess.check_output(["chroot", self.ltsp_path+chroot_name, "apt-get", "clean"])
150                        for fl in glob.glob(self.ltsp_path + chroot_name + "/jdk-*.tar.gz"):
151                                try:
152                                        os.remove(fl)
153                                except:
154                                        pass
155                except:
156                        pass
157
158                os.system(cmd)
159               
160                return 0
161               
162        #def  export_image
163       
164       
165       
166if __name__=="__main__":
167       
168        ltsp=LtspIE()
169        ltsp.parse_args(sys.argv)
170       
171       
Note: See TracBrowser for help on using the repository browser.