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

Last change on this file since 3136 was 3136, checked in by kbut, 3 years ago

add script to set search domain

  • Property svn:executable set to *
File size: 3.9 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                        ltsp-set-domain-search-ltsconf ;\
88                        echo [LtspIE] DONE;\
89                        echo;\
90                        "
91                       
92                        os.system(cmd)
93                       
94                else:
95                       
96                        cmd="echo;\
97                        mkdir -p " + self.ltsp_tmp + ";\
98                        echo [LtspIE] Extracting file...;\
99                        tar -xvzf " + file_path + " -C " + self.ltsp_tmp + " ;\
100                        mv "+self.ltsp_tmp+chroot_name+" "+self.ltsp_path+new_chroot_name+ " ;\
101                        mv "+self.ltsp_path+new_chroot_name+"/"+chroot_name+".json "+self.image_config+new_chroot_name+".json ;\
102                        echo [LtspIE] Updating kernels...;\
103                        ltsp-update-kernels "+new_chroot_name+";\
104                        echo [LtspIE] Generating keys...;\
105                        ltsp-update-sshkeys;\
106                        echo [LtspIE]Updating image...;\
107                        ltsp-update-image "+new_chroot_name+";\
108                        ltsp-set-domain-search-ltsconf;\
109                        echo [LtspIE] DONE;\
110                        echo;\
111                        "
112                       
113                        os.system(cmd)
114               
115                        file_name=self.image_config+new_chroot_name+".json"
116               
117                        f=open(file_name,"r")
118                        tmp=json.load(f)
119                        f.close()
120                        tmp["id"]=new_chroot_name
121                        tmp["name"]=new_chroot_name
122                        #tmp["status"]="working"
123                       
124                        f=open(file_name,"w")
125                        data=unicode(json.dumps(tmp,indent=4,encoding="utf-8",ensure_ascii=False)).encode("utf-8")
126                        f.write(data)
127                        f.close()
128                       
129               
130                return 0
131
132        #def import_image
133       
134        def export_image(self,file_path,chroot_name,use_xterm=False):
135               
136                cmd="echo;\
137                echo [LtspIE] Copying configuration file...;\
138                cp " + self.image_config + chroot_name + ".json " + self.ltsp_path +chroot_name+";\
139                echo [LtspIE] Creating tar.gz file...;\
140                echo [LtspIE] tar -cvzf "+ file_path + " --one-file-system --exclude=/lost+found -C " + self.ltsp_path  + " " + chroot_name + " ;\
141                tar -cvzf "+ file_path + " --one-file-system --exclude=/lost+found -C " + self.ltsp_path  + " " + chroot_name + " ;\
142                echo [LtspIE] Image saved : " + file_path + " \
143                echo [LtspIE] Finished;\
144                echo;\
145                "
146               
147                if use_xterm:
148                        cmd='xterm -T "Export LTSP Image" -e "' + cmd + 'read;"'
149               
150                try:
151                        output=subprocess.check_output(["chroot", self.ltsp_path+chroot_name, "apt-get", "clean"])
152                        for fl in glob.glob(self.ltsp_path + chroot_name + "/jdk-*.tar.gz"):
153                                try:
154                                        os.remove(fl)
155                                except:
156                                        pass
157                except:
158                        pass
159
160                os.system(cmd)
161               
162                return 0
163               
164        #def  export_image
165       
166       
167       
168if __name__=="__main__":
169       
170        ltsp=LtspIE()
171        ltsp.parse_args(sys.argv)
172       
173       
Note: See TracBrowser for help on using the repository browser.