source: lliurex-shutdowner/trunk/fuentes/lliurex-shutdowner-common.install/usr/sbin/shutdown-lliurex @ 5548

Last change on this file since 5548 was 5548, checked in by hectorgh, 3 years ago

Trying to guess thinclients displays, plus countdown fix for thinclients when server is also configured to shutdown

  • Property svn:executable set to *
File size: 1.5 KB
Line 
1#!/usr/bin/env python
2
3import subprocess
4import os
5import time
6
7thinclient_cron_file="/etc/cron.d/lliurex-shutdowner-thinclients"
8wait_time=1
9
10p=subprocess.Popen(["who"],shell=True,stdout=subprocess.PIPE).communicate()[0]
11is_server=os.system("lliurex-version -t server")
12is_thin=os.system("lliurex-version -x thin")
13
14if is_server==0:
15        if not os.path.exists(thinclient_cron_file):
16                wait_time=2
17
18t=time.localtime()
19shutdown_date="%s:%s"%(t.tm_hour,t.tm_min+wait_time)
20
21if is_thin!=0:
22       
23        displays=set()
24       
25        for item in p.strip("\n").split("\n"):
26               
27                tmp_wait_time=wait_time
28                display=None           
29                x=item.split(" ")
30                user=x[0]
31               
32                if "(" not in x[-1] or ")" not in x[-1] or ":" not in x[-1] or "." not in x[-1]:
33                        if is_server==0:
34                                if len(x[-1].split("."))==4:
35                                        # let's try to guess displays
36                                        display=x[-1].lstrip("(").rstrip(")")+":7.0"
37                                else:
38                                        continue
39                        else:   
40                                continue
41                if not display:
42                        display=x[-1].lstrip("(").rstrip(")")
43               
44                if os.path.exists(thinclient_cron_file):
45                        if len(display.split(":")[0].split("."))<4:
46                                continue
47               
48                if display not in displays and display!=None:
49                        displays.add(display)
50                else:
51                        continue
52               
53                if len(display.split("."))>=4:
54                        tmp_wait_time=1
55               
56                cmd="su -c 'DISPLAY=%s /usr/sbin/shutdown-lliurex-dialog %s' %s &"%(display,tmp_wait_time,user)
57                os.system(cmd)
58
59
60if is_thin!=0 and not os.path.exists(thinclient_cron_file):
61        os.system("/sbin/shutdown -h +%s"%wait_time)
62
63if is_thin==0 and not os.path.exists(thinclient_cron_file):
64        time.sleep(60*wait_time)
65        os.system("n4d-client -r -m shutdown -c ShutdownerClient")
Note: See TracBrowser for help on using the repository browser.