Ich stelle hier den Programmcod zur verfügung, aber bitte nur für Private Nutzung! Bitte keine anderen Versionen zur Veröffentlichung stellen!
Code:
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3 info =\
"""
4 ################################################################################
5 ##~Name: TimeLimiter (Zeittool)
6 ##~Version: 0.4
7 ##~Autor: Jonas T.
8 ##******************************************************************************
9 ##
10 ##Beschreibung:
11 ## Fährt den Rechner nach festgelegter Zeit ruter
12 ##
13 ################################################################################
14 """
15
16 def run_timelimiter():
17 import os, sys, subprocess
18 import time
19 import getpass
20
21 try:
22 import dbus
23 except:
24 None
25
26 system = sys.platform
27
28 autor = ("Jonas T.")
29 if system == "linux2":
30 version = ("\033[31mTimeLimiter - Version 0.3\033[m")
31 else:
32 version = ("TimeLimiter - Version 0.3")
33 vertext = ("0.4")
34
35 def help_text():
36 print """
37
38 Befehl:
39 timelimiter [OPTION...] oder hh:mm - Zeit begrennzen
40
41 Optionen:
42
43 hh:mm Zeitangabe
44 --help, -help oder help Zeigt den Hilfe-Text
45 --version, -version, version oder v Zeigt die Version an
46 --info, -info oder info Zeigt den Info-Text an
47
48 Allgemeine Bedienung:
49
50 Die Zeit wird im hh:mm angegeben,
51 es es ist aber nicht die Urzeit gemeint zu der herruntergefahren werden soll,
52 sie bestimmen den Zeitraum bis zum herrunterfahren.
53 """
54 #~MSG_BOX
55 def msg(text):
56 subprocess.Popen("msg %s" %(text), shell = True)
57 #~Ubuntu Notify
58 def notify(text):
59 try:
60 subprocess.Popen("notify-send %s" %(text), shell = True)
61 except Exception as e:
62 print e
63 #~Ubuntu Notify Icon
64 def notify_icon(pfad, text):
65 try:
66 subprocess.Popen("notify-send -i %s '%s'" %(pfad, text), shell = True)
67 except Exception as e:
68 print e
69
70 ###########################################################
71 system = sys.platform
72
73 if system == "win32":
74 print "\nTimeLimiter(%s) for Windows\n" % vertext
75 #print "**************************************************\n"
76 befehleintrag = "shutdown -t"
77 showinfo = False
78 show_restzeit = False
79
80 if system == "linux2":
81
82 print "\n\033[1;32mTimeLimiter(%s) for Linux\033[m\n" % vertext
83 #bildpfad = os.getcwd() + os.path.join("/url2.gif")
84 bildpfad = ("/usr/share/pyshared/timelimiter/url2.gif")
85 befehleintrag = "shutdown -ohne root"
86 showinfo = True
87 show_restzeit = False
88 #############################################################
89 Zusatz_Zeit = 60
90 befehleintrag = befehleintrag
91 #############################################################
92
93 try:
94 begrennzte_zeit = sys.argv[1] #~Konsoleneingang
95
96 ##################~Help~##############################
97 if begrennzte_zeit == "--help" or begrennzte_zeit == "-help" or begrennzte_zeit == "help":
98 help_text()
99 begrennzte_zeit = None
100 ##################~Version~############################
101 if begrennzte_zeit == "--version" or begrennzte_zeit == "-version" or begrennzte_zeit == "version" or begrennzte_zeit == "v":
102 print version
103 begrennzte_zeit = None
104 ##################~Autor~#############################
105 if begrennzte_zeit == "--autor" or begrennzte_zeit == "-autor" or begrennzte_zeit == "autor":
106 print autor
107 begrennzte_zeit = None
108 ##################~Info~##############################
109 if begrennzte_zeit == "--info" or begrennzte_zeit == "-info" or begrennzte_zeit == "info":
110 print info
111 begrennzte_zeit = None
112
113 except Exception as e:
114 ##################~Time Input~###########################
115 if system == "linux2":
116 print ("\033[1;34mAngabeformat: Stunde:Minute(00:00)\033[m")
117 else:
118 print ("Angabeformat: Stunde:Minute(00:00)")
119
120 begrennzte_zeit = raw_input("Zeitbegrenzung: ")
121
122 ##########~Zeigt bei Linux und Windows die Info an###################
123
124 if showinfo == True:
125 if system == "linux2":
126 notify_icon(bildpfad, "'Zeitbegrennzung:' %s" % begrennzte_zeit)
127 if system == "win32":
128 msg("Zeitbegrennzung: %s") % begrennzte_zeit
129
130 ##########~Ausgaben~###################################
131 if begrennzte_zeit == None:
132 print ""
133 else:
134 try:
135 geteilte_zeit = begrennzte_zeit.split(":")
136
137 stunde = geteilte_zeit[0]
138 minute = geteilte_zeit[1]
139
140 print "Stunde : %s" % stunde
141 print "Minute : %s" % minute
142 print
143
144 ##########~Ausrechnung für die restzeit in Sekunden~###################
145 restzeit = int(minute) * 60 + int(stunde) *60 * 60
146 restzeit -= 60
147 ##########~Rechnung für Ausgaben~#############################
148
149 aktuelle_zeit = time.strftime("%H:%M")
150 add = aktuelle_zeit.split(":")
151
152 stundenzeit = int(add[0]) + int(stunde)
153 minutenzeit = int(add[1]) + int(minute)
154
155 gesammtzeit = str(stundenzeit) + ":" + str(minutenzeit)
156 pzeit = int(gesammtzeit[3:6])
157
158 if pzeit < 10:
159 vstundenzeit = gesammtzeit[0:3]
160 vminutenzeit = gesammtzeit[3:6]
161
162 gzeit = vstundenzeit + "0" + vminutenzeit
163
164 print "Einstellung: " + begrennzte_zeit
165 print "Zeitvorgabe zum Herrunterfahren: " + gesammtzeit
166
167 ##########~Ausgaben/Infos~#######################################
168
169 info_zeit = 0
170 if restzeit > 239:
171 info_zeit = 300
172 restzeit -= info_zeit
173 show_restzeit = True
174
175 elif restzeit > 478:
176 info_zeit = 600
177 restzeit -= info_zeit
178 show_restzeit = True
179 else:
180 None
181
182 ##########~Programm wird angehalten bis zum Shutdown~#####################
183 try:
184 time.sleep(restzeit)
185 except:
186 None
187
188 if show_restzeit == True:
189 umwandlung = {300 : 5, 600 : 10}
190 if system == "linux2":
191 notify("'Noch %s Minuten'" % str(umwandlung[info_zeit]))
192 if system == "win32":
193 print True
194 msg("Noch %s Minuten" % str(umwandlung[info_zeit]))
195 time.sleep(info_zeit)
196
197 ##########~Zeigt eine Info an, wenn True~###############################
198
199 if showinfo == True:
200 if system == "linux2":
201 notify("'Herrunterfahren in %ss'" %Zusatz_Zeit)
202
203 if system == "win32":
204 msg('Herrunterfahren in %ss' %Zusatz_Zeit )
205
206 ##########~Vorbereitung zum Herrunterfahren~############################
207
208 print "Herunterfahren in..."
209
210 for i in range(Zusatz_Zeit, 0, -1): #Zählt von 60 runter
211 print "%ss" % i
212 time.sleep(1)
213
214 print ("System wird Herrundergefahren... ") #~Information in der Konsole
215 notify("'System wird Herrundergefahren...'") #~Zeigt bei Ubuntu eine Nachicht an
216
217 ##########~Windows~###########################################
218
219 if sys.platform == "win32":
220 subprocess.Popen(befehleintrag)
221
222 ##########~Ubuntu ohne Root~######################################
223
224 if befehleintrag == "shutdown -ohne root":
225 def shutdown():
226 try:
227 shutdown = dbus.SessionBus()
228 remote_object = shutdown.get_object('org.gnome.SessionManager',
229 '/org/gnome/SessionManager')
230 remote_object.RequestShutdown()
231 print True
232
233 except dbus.exceptions.DBusException:
234 pass
235 print False
236
237 else:
238 return
239
240 try:
241 shutdown = dbus.SessionBus()
242
243 remote_object = shutdown.get_object('org.kde.ksmserver', '/KSMServer')
244 remote_object.logout(0, 0, 2, dbus_interface='org.kde.KSMServerInterface')
245 print True
246 except dbus.exceptions.DBusException:
247 pass
248 print False
249
250 else:
251 return
252
253 try:
254 shutdown = dbus.SystemBus()
255
256 remote_object = shutdown.get_object('org.freedesktop.Hal',
257 '/org/freedesktop/Hal/devices/computer')
258 remote_object.Shutdown(dbus_interface='org.freedesktop.Hal.Device.SystemPowerManagement')
259 print True
260
261 except dbus.exceptions.DBusException:
262 print "Shutdown failed."
263
264 shutdown()
265 ##############################################################
266
267 except Exception as e:
268 raise SyntaxError("Fehlerhafte Angaben!")
269 print (e)
270
271 run_timelimiter()
Der Code ist zwar noch nicht ganz Ordentlich, aber ich Arbeite noch dran, wer will kann sich auch Mitmachen. Anmeldung zum Mitmachen
Download:' TimeLimiter