2 libremanage - Lightweight, free software for remote side-chanel server management
4 Copyright (C) 2018 Alyssa Rosenzweig
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU Affero General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU Affero General Public License for more details.
16 You should have received a copy of the GNU Affero General Public License
17 along with this program. If not, see <https://www.gnu.org/licenses/>.
26 $ libremanage [server name] [command]
30 $ libremanage web2 reboot
32 Server names are defined in the accompanying config.py.
34 Valid commands are as follows:
36 - shutdown, reboot, poweron: Power management
37 - tty: Open TTY in GNU Screen
40 def die_with_usage(message
):
45 if len(sys
.argv
) != 3:
46 die_with_usage("Incorrect number of arguments")
48 def get_server_handle(name
):
49 # TODO: resolve based on config, SSH in, give self-contained handle?
52 def set_server_power(state
, server
):
53 print("Setting server " + server
+ " to power state " + str(state
))
58 "shutdown": (False, functools
.partial(set_server_power
, 0)),
59 "poweron": (False, functools
.partial(set_server_power
, 1)),
60 "reboot": (False, lambda s
: (set_server_power(0, s
), set_server_power(1, s
))),
62 # TTY access (or keyboard if wired as such)
64 "tty": (True, lambda s
: print("Screening on " + s
))
67 def issue_command(server_name
, command
):
68 server
= get_server_handle(server_name
)
69 print(server_name
, command
)
72 (visible_shell
, callback
) = COMMANDS
[command
]
74 die_with_usage("Invalid command supplied")
76 print("Shell visible? " + str(visible_shell
))
79 issue_command(sys
.argv
[1], sys
.argv
[2])