File: apcold.dev

package info (click to toggle)
powerman 2.4.4-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,432 kB
  • sloc: ansic: 19,458; sh: 7,225; yacc: 694; makefile: 455; lex: 272
file content (176 lines) | stat: -rw-r--r-- 3,506 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#
# $Id:$
#
# apparently there is an apc interface older than "apc.dev"
#
# This talks to:
#
#        Model Number      : AP9210       Serial Number     : WA9903036579
#        Firmware Revision : v1.1.1       Hardware Revision : C4
#        Manufacture Date  : 01/14/1999
#
#
specification "apcold" {
	timeout 	10

	plug name { "1" "2" "3" "4" "5" "6" "7" "8" }

	script login {
		expect "\n"
		expect "User Name : "
		send "apc\r\n"
		expect "Password  : "
		send "apc\r\n"
		expect "> "
		send "1\r\n"	# outlet manager menu
		expect "> "
	}
	script logout {
		send "\033"	# ESC back to control console menu
		expect "> "
		send "4\r\n"
	}
	script status_all {
		send "9\r\n"	# master/pdu control
		expect "> "
		send "1\r\n"	# control of master pdu
		foreachplug {
			expect "([1-8]+):(ON|OFF)[^\n]*\r\n"
			setplugstate $1 $2 on="ON" off="OFF"
		}
		expect "> "
		send "\033"	# ESC back to master/pdu
		expect "> "
		send "\033"	# ESC back to outlet manager menu
		expect "> "
	}
	script on {
		send "%s\r\n"
		expect "> "
		send "1\r\n" # select outlet control
		expect "> "

		send "1\r\n" # immediate on
		expect "Enter 'YES' to continue or <ENTER> to cancel : "
		send "YES\r\n"
		expect "successfully!\r\n"
		send "\r\n"
		expect "> "

		send "\033"	# ESC back to outlet
		expect "> "
		send "\033"	# ESC back to outlet manager
		expect "> "
	}
	script on_all {
		send "9\r\n"
		expect "> "
		send "1\r\n" # select outlet control
		expect "> "

		send "1\r\n" # immediate on
		expect "Enter 'YES' to continue or <ENTER> to cancel : "
		send "YES\r\n"
		expect "successfully!\r\n"
		send "\r\n"
		expect "> "

		send "\033"
		expect "> "
		send "\033"
		expect "> "
	}
	script off {
		send "%s\r\n"
		expect "> "
		send "1\r\n" # select outlet control
		expect "> "

		send "2\r\n" # immediate off
		expect "Enter 'YES' to continue or <ENTER> to cancel : "
		send "YES\r\n"
		expect "successfully!\r\n"
		send "\r\n"
		expect "> "

		send "\033"
		expect "> "
		send "\033"
		expect "> "
	}
	script off_all {
		send "9\r\n"
		expect "> "
		send "1\r\n" # select outlet control
		expect "> "

		send "2\r\n" # immediate off
		expect "Enter 'YES' to continue or <ENTER> to cancel : "
		send "YES\r\n"
		expect "successfully!\r\n"
		send "\r\n"
		expect "> "

		send "\033"
		expect "> "
		send "\033"
		expect "> "
	}
# If outlet is initially off, "immediate reboot" (4) will leave it off.
# This doesn't match PowerMan's semantics for cycle, therefore do explicit
# immediate off + immediate on.
	script cycle {
		send "%s\r\n"
		expect "> "
		send "1\r\n" # select outlet control
		expect "> "

		send "2\r\n" # immediate off
		expect "Enter 'YES' to continue or <ENTER> to cancel : "
		send "YES\r\n"
		expect "successfully!\r\n"
		send "\r\n"
		expect "> "

		delay 4

		send "1\r\n" # immediate on
		expect "Enter 'YES' to continue or <ENTER> to cancel : "
		send "YES\r\n"
		expect "successfully!\r\n"
		send "\r\n"
		expect "> "

		send "\033"
		expect "> "
		send "\033"
		expect "> "
	}
	script cycle_all {
		send "9\r\n"
		expect "> "
		send "1\r\n" # select outlet control
		expect "> "

		send "2\r\n" # immediate off
		expect "Enter 'YES' to continue or <ENTER> to cancel : "
		send "YES\r\n"
		expect "successfully!\r\n"
		send "\r\n"
		expect "> "

		delay 4

		send "1\r\n" # immediate on
		expect "Enter 'YES' to continue or <ENTER> to cancel : "
		send "YES\r\n"
		expect "successfully!\r\n"
		send "\r\n"
		expect "> "

		send "\033"
		expect "> "
		send "\033"
		expect "> "
	}
}