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
39 def die_with_usage(message
):
44 if len(sys
.argv
) != 3:
45 die_with_usage("Incorrect number of arguments")
47 def get_server_handle(name
):
48 # TODO: resolve based on config, SSH in, give self-contained handle?
51 def set_server_power(state
, server
):
52 print("Setting server " + server
+ " to power state " + str(state
))
55 "shutdown": functools
.partial(set_server_power
, 0),
56 "poweron": functools
.partial(set_server_power
, 1),
57 "reboot": lambda s
: (set_server_power(0, s
), set_server_power(1, s
))
60 def issue_command(server_name
, command
):
61 server
= get_server_handle(server_name
)
62 print(server_name
, command
)
65 COMMANDS
[command
](server_name
)
67 die_with_usage("Invalid command supplied")
69 issue_command(sys
.argv
[1], sys
.argv
[2])