Statistics
| Branch: | Tag: | Revision:

root / doc / examples / basic-oob @ d59fea3d

History | View | Annotate | Download (2.2 kB)

1
#!/bin/bash
2
#
3

    
4
# Copyright (C) 2011 Google Inc.
5
#
6
# This program is free software; you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation; either version 2 of the License, or
9
# (at your option) any later version.
10
#
11
# This program is distributed in the hope that it will be useful, but
12
# WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
# General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program; if not, write to the Free Software
18
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
# 02110-1301, USA.
20

    
21
SSH_USER='root'
22
SSH_FLAGS='-q -oStrictHostKeyChecking=no'
23

    
24
EXIT_SUCCESS=0
25
EXIT_FAILURE=1
26
EXIT_UNKNOWN=2
27

    
28
_run_ssh() {
29
  local host="$1"
30
  local command="$2"
31

    
32
  ssh $SSH_FLAGS "$SSH_USER@$host" "$command" 1>&2
33
  return $?
34
}
35

    
36
_power_on() {
37
  echo 'power-on not supported in this script' >&2
38
  exit $EXIT_FAILURE
39
}
40

    
41
_power_off() {
42
  local host="$1"
43

    
44
  if ! _run_ssh "$host" 'shutdown -h now'; then
45
    echo "Failure during ssh to $host" >&2
46
    exit $EXIT_FAILURE
47
  fi
48
}
49

    
50
_power_cycle() {
51
  local host="$1"
52

    
53
  if ! _run_ssh "$host" 'shutdown -r now'; then
54
    echo "Failure during ssh to $host" >&2
55
    exit $EXIT_FAILURE
56
  fi
57
}
58

    
59
_power_status() {
60
  local host="$1"
61

    
62
  if fping -q "$host" > /dev/null 2>&1; then
63
    echo '{ "powered": true }'
64
  else
65
    echo '{ "powered": false }'
66
  fi
67
}
68

    
69
_health() {
70
  echo 'health not supported in this script' >&2
71
  exit $EXIT_FAILURE
72
}
73

    
74
_action() {
75
  local command="$1"
76
  local host="$2"
77

    
78
  case "$command" in
79
    power-on)
80
      _power_on "$host"
81
      ;;
82
    power-off)
83
      _power_off "$host"
84
      ;;
85
    power-cycle)
86
      _power_cycle "$host"
87
      ;;
88
    power-status)
89
      _power_status "$host"
90
      ;;
91
    health)
92
      _health "$host"
93
      ;;
94
    *)
95
      echo "Unsupported command '$command'" >&2
96
      exit $EXIT_FAILURE
97
      ;;
98
  esac
99
}
100

    
101
main() {
102
  if [[ $# != 2 ]]; then
103
    echo "Wrong argument count, got $#, expected 2" >&2
104
    exit $EXIT_FAILURE
105
  fi
106

    
107
  _action "$@"
108

    
109
  exit $EXIT_SUCCESS
110
}
111

    
112
main "$@"