Contents of /mcore-src/trunk/mcore-tools/src/modules/systemd/systemd.client.class.in
Parent Directory | Revision Log
Revision 2269 -
(show annotations)
(download)
Tue Jan 14 10:34:57 2014 UTC (10 years, 8 months ago) by niro
File size: 2200 byte(s)
Tue Jan 14 10:34:57 2014 UTC (10 years, 8 months ago) by niro
File size: 2200 byte(s)
-use global argv arrays GLOBAL_ARGV and CLASS_ARGV to fix whitespace issues with the read cmd. escaping works with this now. every class must use the CLASS_ARGV array for arguments
1 | # $Id$ |
2 | |
3 | provide basic-init systemd |
4 | require basic-system |
5 | |
6 | set_system_service() |
7 | { |
8 | local command="${CLASS_ARGV[0]}" |
9 | local service="${CLASS_ARGV[1]}" |
10 | local opts="${CLASS_ARGV[2]}" |
11 | |
12 | [[ -z ${command} ]] && help_system_service && return 1 |
13 | [[ -z ${service} ]] && help_system_service && return 1 |
14 | |
15 | local chrooted |
16 | if [[ -n ${MROOT} ]] && [[ ${MROOT} != / ]] |
17 | then |
18 | chrooted="system_chroot" |
19 | case ${command} in |
20 | start|stop|restart|reload) |
21 | eecho "Command not available while \$MROOT is set" |
22 | return 1 |
23 | ;; |
24 | esac |
25 | fi |
26 | |
27 | if [[ -n $(${chrooted} systemctl status ${service} | grep 'Reason: No such file or directory') ]] |
28 | then |
29 | eecho "Service '${service}' unknown!" |
30 | return 1 |
31 | fi |
32 | |
33 | # auto-append .service to fix issues while $MROOT is set |
34 | if [[ -n $(echo ${service} | grep -v '.service$\|.target$\|.mount$\|.socket$\|.timer$') ]] |
35 | then |
36 | service="${service}.service" |
37 | decho "\$service replaced with '${service}'" |
38 | fi |
39 | |
40 | case "${command}" in |
41 | start) ${chrooted} systemctl start "${service}" ;; |
42 | stop) ${chrooted} systemctl stop "${service}" ;; |
43 | restart) ${chrooted} systemctl try-restart "${service}" ;; |
44 | reload) ${chrooted} systemctl reload-or-try-restart "${service}" ;; |
45 | enable) ${chrooted} systemctl enable "${service}" ;; |
46 | disable) ${chrooted} systemctl disable "${service}" ;; |
47 | *) help_system_service && return ;; |
48 | esac |
49 | } |
50 | |
51 | get_system_service() |
52 | { |
53 | local command="${CLASS_ARGV[0]}" |
54 | local service="${CLASS_ARGV[1]}" |
55 | |
56 | [[ -z ${command} ]] && help_system_service && return 1 |
57 | [[ -z ${service} ]] && help_system_service && return 1 |
58 | |
59 | local chrooted |
60 | if [[ -n ${MROOT} ]] && [[ ${MROOT} != / ]] |
61 | then |
62 | chrooted="system_chroot" |
63 | case ${command} in |
64 | status) |
65 | eecho "Command not available while \$MROOT is set" |
66 | return 1 |
67 | ;; |
68 | esac |
69 | fi |
70 | |
71 | if [[ -n $(${chrooted} systemctl status ${service} | grep 'Reason: No such file or directory') ]] |
72 | then |
73 | eecho "Service '${service}' unknown!" |
74 | return 1 |
75 | fi |
76 | |
77 | case "${command}" in |
78 | status) ${chrooted} systemctl status "${service}" ;; |
79 | enabled) ${chrooted} systemctl is-enabled "${service}"; rvecho "$?" ;; |
80 | runlevel) rvecho "$(readline ${MROOT}@@SYSTEMDSYSTEMCONFDIR@@/default.target)" ;; |
81 | *) help_system_service && return ;; |
82 | esac |
83 | } |