#!/bin/bash
#  sys/h4 - Host management helper

set -e

source "/home/zwelch/src/mcf/mcsh-release/install/share/mcsh/mcsh.sh"


######
# Native dependencies

h4_client_packages=( iotop iftop )


######
# Host Monitoring CLI

h4_monitor() { cmd_dispatch "$@"; }
h4_monitor_usage() {
	cat <<USAGE
<cmd>
Host Monitoring Commands:
	all				Monitors everything in a new screen
	users				Monitors users
	disk				Monitors disk space
	tasks				Monitors processes

Resource Monitoring Commands:
	cpu ...				Monitors CPU usage
	io ...				Monitors I/O usage
	net ...				Monitors network usage
USAGE
}

h4_monitor_all() {
	lib_load 'sys/tool/screen'
	screen_run_func h4_monitor_all_screenrc
}

h4_monitor_all_screenrc() {
	local -a cmd=( "${script[@]:0:$((${#script[@]} - 1))}" )
	local i
	for i in users tasks cpu disk io net; do
		screen_gen_run "${cmd[@]}" $i
	done
}

h4_monitor_users() { run watch 'w'; }
h4_monitor_disk() { run watch 'df -h'; }
h4_monitor_tasks() { run watch 'pstree -u'; }

h4_monitor_cpu() { run top "$@"; }
h4_monitor_io() { run_sudo iotop "$@"; }
h4_monitor_net() { run_sudo iftop "$@"; }


######
# Host CLI

h4_host() { cmd_dispatch "$@"; }
h4_host_usage() {
	cat <<USAGE
<cmd> ...
Host Commands:
	upgrade				Performs a host-wide upgrade
	run ...				Run each tool with the given args

Host Command Groups:
	client ...			Runs client command with each tool
	server ...			Runs server command with each tool
	backup ...			Run backup on all tools
	restore ...			Run restore for all tools
USAGE
}

h4_host_run() { run_each_tool "$@"; }
h4_host_upgrade() {
	lib_load 'sys/tool/apt'
	apt_upgrade
}

h4_host_client() {
	lib_load 'sys/client'
	cmd_dispatch "$@"
}
h4_host_client_deps() { host_class_deps client; }
h4_host_client_install() { host_class_install client; }

h4_host_server() {
	lib_load 'sys/server'
	cmd_dispatch "$@"
}
h4_host_server_deps() { host_class_deps server; }
h4_host_server_install() { host_class_install server; }


######
# Backup CLI

h4_host_backup() {
	lib_load 'sys/backup'
	cmd_dispatch "$@"
}
h4_host_backup_usage() {
	cat <<USAGE
<cmd>
Host Backup Commands:
	full ...			Run backup on all tools
USAGE
}
h4_host_backup_full() { backup_host full; }


h4_host_restore() {
	lib_load 'sys/backup'
	cmd_dispatch "$@"
}
h4_host_restore_usage() {
	cat <<USAGE
<cmd>
Host Restore Commands:
	full ...			Run full restore on all tools
USAGE
}
h4_host_restore_full() { restore_host full; }


######
# Main

h4_desc() { echo "Host management helper"; }

h4_usage() {
	cat <<USAGE
<cmd> ...
Host Command Groups:
	host ...			Host management commands
	monitor ...			Host monitoring commands
USAGE
}

app_run "$@"

View the Developer Guide Index

View the Reference Manual Index


Generated on Thu May 4 18:59:07 PDT 2017 by mcsh i7 v0.19.0.