]> git.pld-linux.org Git - packages/PowerChutePlus.git/blame - PowerChutePlus-Config.sh
- new spec syntax is so cool
[packages/PowerChutePlus.git] / PowerChutePlus-Config.sh
CommitLineData
ec1d83db
JR
1#!/bin/sh
2#
3# Copyright 1999 American Power Conversion, All Rights Reserved
4#
5# Description: This file is used to configure PowerChute Plus
6# for Linux.
7#
8# Usage: ./Config - will configure PowerChute PLUS after
9# installing it from an RPM archive
10#
11#
12
13###################
14# Global Constants
15###################
16# --------------------------------------------------------------------------
17# Do not change definitons for TRUE and FALSE from below, or '&&' shell logic
18# will fail. TRUE=0 and FALSE!=0 is shell convention
19# --------------------------------------------------------------------------
20FALSE=1
21TRUE=0
22
23YES=0
24NO=1
25QUIT=2
26INVALID=99
27
28SMART="smart"
29SIMPLE="simple"
30PNP="PNP"
31NORMAL="Normal"
32
33NOT_SYM1="Bad battery"
34SYM=""
35NOT_SYM2="UPS on bypass"
36SYM2="UPS"
37NOT_SYM3=""
38SYM10="TimeOutFactor = 20"
39SYM11="UPS system is in maintenance bypass set by switch"
40NOT_SYM4="UPS on bypass: user set via rear switch"
41SYM5="Actions = LUS"
42NOT_SYM5="Actions = LU"
43
44FULL_PROD_NAME="PowerChute Plus for Unix"
45PROD_HEADER="4.5.2"
46INST_SCRIPT_NAME=$0
47LINUX_INTEL_STRING="Linux"
48OS_NAME="$LINUX_INTEL_STRING"
49MONO_WARN_COLOR_STRING="WarningColor = LightGray"
50MONO_ERR_COLOR_STRING="ErrorColor = LightGray"
51TTY1="/dev/ttyS0"
52TTY2="/dev/ttyS1"
53SHUTDOWN_SEARCH_STRING="swapoff -a"
54STARTUP_FILE_PATH="/etc/rc.d/init.d"
55STARTUP_FILE="$STARTUP_FILE_PATH/upsd"
56STARTUP_RC_PATH="/etc/rc.d"
57MODEM_ALLOWED_PORT_NAMES="/dev/modem,/dev/ttyS0,/dev/ttyS1"
58MODEM_PORT_NAME="/dev/modem"
59SHUTDOWN_FILE="/etc/rc.d/init.d/halt"
60SHUTDOWN_FILE_BACKUP="/usr/lib/powerchute/halt"
61SHUTDOWN_COMMAND_STRING="if [ -r /upsoff.cmd ] #POWERCHUTE\\
62 then #POWERCHUTE\\
63 . ./upsoff.cmd >/dev/null #POWERCHUTE\\
64 rm -f /upsoff.cmd #POWERCHUTE\\
65 fi #POWERCHUTE\\
66 "
67
68
69COMM_VERIFIED=$FALSE
70IS_MODEM_PORT=$FALSE
71IS_LOCAL_PORT=$FALSE
72SKIP_PORT_VERIFICATION=$FALSE
73
74# Variables that start uninitialized
75ALLOWED_PORT_NAMES=
76APC_HARDWARE_PROD=
77CABLE_TYPE=
78INST_HARDWARE=
79INST_TTY=
80MEASURE_UPS=
81ROOT_USER=
82RUN_COMMAND_FILES_AS_ROOT=
83SEND_EMAIL_AS_ROOT=
84SIGNAL_TYPE=
85UI_MONO_COLOR_SCHEME=
86USE_TCP=
87VALID_TTY_SELECTED=
88WEB_BROWSER=
89
90#######################
91# Functions used below
92#######################
93
94###########################################################################
95# IsYN handles Yes No responses
96###########################################################################
97Echo() {
98
99 tmp_name=`uname -s`
100 string="$1"
101
102 if [ "$tmp_name" = "Linux" ]
103 then
104 echo -e "$string"
105 elif [ -r /usr/5bin/echo ]
106 then
107 /usr/5bin/echo "$string"
108 else
109 echo "$string"
110 fi
111}
112
113
114echo_line() {
115 Echo "----------------------------------------------------------------------------"
116}
117
118
119
120HitAnyKey() {
121 default="Press Enter to continue"
122 string=${1:-$default}
123 Echo "$string \\c"
124 read tmp_strike
125}
126
127
128beep() {
129 Echo "\a\\c"
130}
131
132IsYN(){
133 VALID_YN=$FALSE
134 YN=
135 rval=
136 Echo "[y/n] \\c"
137 read YN
138 if [ -z "$YN" ]
139 then
140 VALID_YN=$FALSE
141 rval=$INVALID
142 else
143 case "$YN" in
144 [Yy]*)
145 VALID_YN=$TRUE
146 rval=$YES
147 ;;
148 [Nn]*)
149 VALID_YN=$TRUE
150 rval=$NO
151 ;;
152 *)
153 VALID_YN=$FALSE
154 rval=$INVALID
155 ;;
156 esac
157 fi
158 if [ $rval -eq $INVALID ]
159 then
160 beep
161 Echo "Invalid Response..."
162 fi
163 return $rval
164}
165
166
167IsYNLoop() {
168 rval=$INVALID
169 query_string="$1"
170 valid_response=$FALSE
171 while [ $valid_response -eq $FALSE ]
172 do
173 Echo "$query_string \\c"
174 IsYN
175 rval=$?
176 case "$rval" in
177 $YES|$NO)
178 valid_response=$TRUE
179 ;;
180 esac
181 done
182 return $rval
183}
184
185CheckEepromUps() {
186
187 eeprom=$1
188 dev_name=$2
189 set `./ups_adjust -in -d$dev_name -c$eeprom -t$CABLE_TYPE 2>/dev/null`
190 while [ ! -z "$2" ]
191 do
192 if [ "$1" = "FV" ]
193 then
194 firmware="$2"
195 elif [ "$1" = "2G+" ]
196 then
197 if [ "$2" = "TRUE" ]
198 then
199 Is2g=$TRUE
200 else
201 Is2g=$FALSE
202 fi
203 elif [ "$1" = "VAL" ]
204 then
205 current=$2
206 fi
207 shift;
208 shift;
209 done
210 if [ $Is2g -eq $TRUE ]
211 then
212 if [ `expr $current \> 20` -eq 1 ]
213 then
214 rval=$FALSE
215 else
216 rval=$TRUE
217 fi
218 else
219 rval=$FALSE
220 fi
221 return $rval
222}
223
224CheckDipSwitches() {
225
226 dev_name=$1
227 okay_flag=$FALSE
228 rval=$FALSE
229
230 while [ $okay_flag -eq $FALSE ]
231 do
232 set `./ups_adjust -sn -d$dev_name -c7 -t$CABLE_TYPE 2>/dev/null`
233 if [ "$2" != "NA" ]
234 then
235 if [ -z "$2" ] || [ $2 -ne 0 ]
236 then
237 echo_line
238 beep
239 Echo "Your UPS will not accept an attempt to change its eeproms."
240 Echo "If your UPS has dip switches on the back panel, check that they are all in"
241 Echo "'On' position. After installation, you can set them back to their"
242 Echo "original state if you wish."
243 echo_line
244 continue_loop_flag=$TRUE
245 while [ $continue_loop_flag -eq $TRUE ]
246 do
247 Echo "Do you wish to Retry setting this value, or Continue on with"
248 Echo "the installation? [R/C] \\c"
249 read response
250 if [ -z "$response" ]
251 then
252 beep
253 Echo "Invalid response..."
254 else
255 case "$response" in
256 [Cc]*)
257 continue_loop_flag=$FALSE
258 okay_flag=$TRUE
259 ;;
260 [Rr]*)
261 continue_loop_flag=$FALSE
262 okay_flag=$FALSE
263 Echo
264 ;;
265 *)
266 beep
267 Echo "Invalid Response..."
268 ;;
269 esac
270 fi
271 done
272
273 else
274 okay_flag=$TRUE
275 rval=$TRUE
276 fi
277 else
278 okay_flag=$TRUE
279 rval=$TRUE
280 fi
281 done
282 return $rval
283}
284
285# This function takes an eeprom and a device name and
286# it determines the current setting of the eeprom and
287# returns this value. It returns -1 on error.
288GetCurrentEepromSetting() {
289 eeprom=$1
290 dev_name=$2
291
292 ret_val="-1"
293 set `./ups_adjust -in -d$dev_name -c$eeprom -t$CABLE_TYPE 2>/dev/null`
294
295 while [ "$1" ]
296 do
297 if [ "$1" = "VAL" ]
298 then
299 if [ -n "$2" ]
300 then
301 ret_val="$2"
302 fi
303 fi
304 shift
305 done
306 return $ret_val
307}
308
309
310# This functions takes an eeprom, a check value, and a device
311# name and it determines the next valid eeprom setting value
312# greater than the check value.
313GetNextEepromValueGreaterThan() {
314 eeprom=$1
315 check_value=$2
316 dev_name=$3
317
318 ret_val=-1
319 starting_val=-1
320 GetCurrentEepromSetting $eeprom $dev_name
321 starting_val="$?"
322
323 if [ "$starting_val" -ne "-1" ]
324 then
325 done=$FALSE
326 previous_val=$starting_val
327 while [ $done -eq $FALSE ]
328 do
329 set `./ups_adjust -sn -d$dev_name -c$eeprom -t$CABLE_TYPE 2>/dev/null`
330 if [ "$2" -eq "$starting_val" ]
331 then
332 done=$TRUE
333 else
334 if [ "$2" -gt "$check_value" ]
335 then
336 if [ "$2" -lt "$previous_val" ]
337 then
338 ret_val="$2"
339 fi
340 fi
341 fi
342 previous_val="$2"
343 Echo ".\\c"
344 done
345 fi
346
347 return $ret_val
348}
349
350
351CycleUntilAcceptableValue() {
352
353 eeprom=$1
354 current_value=$2
355 desired_value=$3
356 dev_name=$4
357 okay_flag=$FALSE
358 rval=$FALSE
359
360 while [ $okay_flag -eq $FALSE ]
361 do
362 Echo ".\\c"
363 set `./ups_adjust -sn -d$dev_name -c$eeprom -t$CABLE_TYPE 2>/dev/null`
364 if [ "$2" -eq "$desired_value" ]
365 then
366 okay_flag=$TRUE
367 rval=$TRUE
368 elif [ "$2" -eq "$current_value" ]
369 then
370 #We either can't change the value, or we are back
371 #where we started and our desired value never turned up
372 okay_flag=$TRUE
373 echo_line
374 beep
375 Echo "Unable to modify the value of this eeprom. If you are unable to"
376 Echo "change this value through the powerchute user interface, refer to the UPS"
377 Echo "manual, or contact APC Technical Support."
378 echo_line
379 HitAnyKey
380 fi
381 done
382 Echo
383}
384
385CopyOutToIn() {
386 cp /tmp/temp_ini.out /tmp/temp_ini.in
387}
388
389
390#######################################################################
391# Trap signals so we can clean up temp files
392#######################################################################
393
394trap 'Echo \\nsignal caught, Quitting.;exit' 1 2 15
395
396# ---------------------------------------------------------------------
397# ----------------------------- Start ---------------------------------
398# ---------------------------------------------------------------------
399cd /usr/lib/powerchute
400
401
402#######################################################################
403# Print Banner
404#######################################################################
405Echo "-----------------------------------------------------------------------"
406Echo " PowerChute Plus for Linux v$PROD_HEADER Configuration Script"
407Echo " Copyright American Power Conversion 1999"
408Echo "-----------------------------------------------------------------------"
409Echo
410
411#######################################################################
412# Verify root authority
413#######################################################################
414
415 root_string=`id | grep root`
416
417 if [ -z "$root_string" ]
418 then
419 ROOT_USER=$FALSE
420 echo_line
421 beep
422 Echo "$INST_SCRIPT_NAME must be run with root privileges!"
423 echo_line
424 echo_line
425 IsYNLoop "Do you wish to continue anyway?"
426 case "$?" in
427 $NO)
428 exit
429 ;;
430 esac
431 else
432 ROOT_USER=$TRUE
433 fi
434
435
436#######################################################################
437# Select an APC Hardware Product
438#######################################################################
439
440 VALID_HARDWARE_SELECTED=$FALSE
441 INST_HARDWARE=
442 while [ $VALID_HARDWARE_SELECTED -eq $FALSE ]
443 do
444 Echo
445 Echo " 1) Matrix-UPS"
446 Echo " 2) Smart-UPS"
447 Echo " 3) Back-UPS"
448 Echo " 4) Back-UPS Pro"
449 Echo " 5) Symmetra Power Array"
450 Echo " 6) Smart-UPS DP"
451 Echo " "
452 Echo "Which APC Hardware will $FULL_PROD_NAME be running with [?] \\c"
453 read INST_HARDWARE
454 case "$INST_HARDWARE" in
455 1)
456 VALID_HARDWARE_SELECTED=$TRUE
457 APC_HARDWARE_PROD="Matrix"
458 SIGNAL_TYPE=$SMART
459 CABLE_TYPE=$NORMAL
460 SYMSTR1=$NOT_SYM1
461 SYMSTR2=$NOT_SYM2
462 SYMSTR13=$NOT_SYM3
463 SYMSTR14=$NOT_SYM4
464 SYMSTR3=$SYM5
465
466 ;;
467 2)
468 VALID_HARDWARE_SELECTED=$TRUE
469 APC_HARDWARE_PROD="SmartUps"
470 SIGNAL_TYPE=$SMART
471 CABLE_TYPE=$NORMAL
472 SYMSTR1=$NOT_SYM1
473 SYMSTR2=$NOT_SYM2
474 SYMSTR13=$NOT_SYM3
475 SYMSTR14=$NOT_SYM4
476 SYMSTR3=$SYM5
477 ;;
478 3)
479 VALID_HARDWARE_SELECTED=$TRUE
480 APC_HARDWARE_PROD="BackUps"
481 SIGNAL_TYPE=$SIMPLE
482 CABLE_TYPE=$SIMPLE
483 SYMSTR1=$NOT_SYM1
484 SYMSTR2=$NOT_SYM2
485 SYMSTR13=$NOT_SYM3
486 SYMSTR14=$NOT_SYM4
487 SYMSTR3=$SYM5
488 # No way to verify comm for simple sig, assume
489 # OK to skip warning banner
490 COMM_VERIFIED=$TRUE
491 IS_MODEM_PORT=$TRUE
492 ;;
493 4)
494 VALID_HARDWARE_SELECTED=$TRUE
495 APC_HARDWARE_PROD="SmartUps"
496 SIGNAL_TYPE=$SMART
497 CABLE_TYPE=$PNP
498 SYMSTR1=$NOT_SYM1
499 SYMSTR2=$NOT_SYM2
500 SYMSTR13=$NOT_SYM3
501 SYMSTR14=$NOT_SYM4
502 SYMSTR3=$SYM5
503 ;;
504 5)
505 VALID_HARDWARE_SELECTED=$TRUE
506 APC_HARDWARE_PROD="Symmetra"
507 SIGNAL_TYPE=$SMART
508 CABLE_TYPE=$NORMAL
509 SYMSTR1=$SYM1
510 SYMSTR2=$SYM2
511 SYMSTR13=$SYM10
512 SYMSTR14=$SYM11
513 SYMSTR3=$NOT_SYM5
514 ;;
515 6)
516 VALID_HARDWARE_SELECTED=$TRUE
517 APC_HARDWARE_PROD="SmartUps"
518 SIGNAL_TYPE=$SMART
519 CABLE_TYPE=$NORMAL
520 SYMSTR1=$NOT_SYM1
521 SYMSTR2=$NOT_SYM2
522 SYMSTR13=$NOT_SYM3
523 SYMSTR14=$NOT_SYM4
524 SYMSTR3=$SYM5
525 ;;
526 *)
527 VALID_HARDWARE_SELECTED=$FALSE
528 beep
529 Echo "Invalid Selection...."
530 esac
531 done
532
533
534#######################################################################
535# Ask about MeasureUps
536#######################################################################
537
538 if [ $SIGNAL_TYPE = $SMART ]
539 then
540 Echo
541 echo_line
542 Echo "The Measure-UPS is a device which is designed to perform environmental "
543 Echo "monitoring in conjunction with $FULL_PROD_NAME"
544 echo_line
545
546 Echo
547 IsYNLoop "Do you currently have a Measure-UPS attached to the UPS?"
548 case "$?" in
549 $YES)
550 MEASURE_UPS=$TRUE
551 ;;
552 $NO)
553 MEASURE_UPS=$FALSE
554 ;;
555 esac
556
557 else
558 MEASURE_UPS=$FALSE
559 fi
560
561
562#######################################################################
563# Ask about TCP/IP
564#######################################################################
565
566 Echo
567 echo_line
568 Echo "$FULL_PROD_NAME is able to monitor other hosts. However, in order"
569 Echo "to monitor other hosts TCP/IP must be installed. If you do not have"
570 Echo "TCP/IP installed, answer 'n' to the following question."
571 echo_line
572 Echo
573 IsYNLoop "Do you currently have TCP/IP Installed?"
574 case "$?" in
575 $YES)
576 USE_TCP=$TRUE
577 ;;
578 $NO)
579 USE_TCP=$FALSE
580 ;;
581 esac
582
583############################################################################
584# Ask about coloring schemes...
585############################################################################
586 Echo
587 echo_line
588 Echo "If you will be using the Motif version of the User Interface on a "
589 Echo "monochrome monitor, using the Monochrome Coloring scheme is recommended."
590 Echo
591 echo_line
592 Echo " 1) Use Default Color scheme"
593 Echo " 2) Use Monochrome Color scheme"
594 echo
595 valid_color_scheme=$FALSE
596 while [ $valid_color_scheme -eq $FALSE ]
597 do
598 Echo "Which color scheme do you wish to use [1]? \\c"
599 read color_scheme
600 if [ -z "$color_scheme" ] || [ "$color_scheme" = "1" ]
601 then
602 valid_color_scheme=$TRUE
603 UI_MONO_COLOR_SCHEME=$FALSE
604 else
605 if [ "$color_scheme" = "2" ]
606 then
607 UI_MONO_COLOR_SCHEME=$TRUE
608 valid_color_scheme=$TRUE
609 else
610 valid_color_scheme=$FALSE
611 fi
612 fi
613 done
614
615
616#######################################################################
617# Select communications port
618#######################################################################
619
620 Echo
621 echo_line
622 Echo "$FULL_PROD_NAME requires complete control of the serial port. No"
623 Echo "processes, including gettys, are allowed to be accessing the port."
624 Echo "Therefore, the serial port you select must NOT be enabled for logins. To"
625 Echo "ensure that $FULL_PROD_NAME has control of the serial port, make"
626 Echo "sure that it is not enabled for logins. To disable the port for logins"
627 Echo "consult the $FULL_PROD_NAME manual."
628 echo_line
629 Echo
630 VALID_TTY_SELECTED=$FALSE
631 TTY_NUM=
632 while [ $VALID_TTY_SELECTED -eq $FALSE ]
633 do
634 Echo
635 Echo " 1) $TTY1"
636 Echo " 2) $TTY2"
637 Echo " 3) Other"
638 Echo
639 Echo "Which serial device will be dedicated to $FULL_PROD_NAME [?] \\c"
640 read TTY_NUM
641 case "$TTY_NUM" in
642 1)
643 ALLOWED_PORT_NAMES="$TTY1,$TTY2"
644 INST_TTY=$TTY1
645 VALID_TTY_SELECTED=$TRUE
646 ;;
647 2)
648 ALLOWED_PORT_NAMES="$TTY1,$TTY2"
649 INST_TTY=$TTY2
650 VALID_TTY_SELECTED=$TRUE
651 ;;
652 3)
653 VALID_TEMP_TTY=$FALSE
654 while [ $VALID_TEMP_TTY -eq $FALSE ]
655 do
656 Echo "Enter full path name of a serial device \\c"
657 read TEMP_TTY
658 if [ -z "$TEMP_TTY" ]
659 then
660 Echo "Invalid Selection"
661 else
662 VALID_TEMP_TTY=$TRUE
663 INST_TTY=$TEMP_TTY
664 ALLOWED_PORT_NAMES="$TTY1,$TTY2,$INST_TTY"
665 fi
666 done
667 VALID_TTY_SELECTED=$TRUE
668 ;;
669 *)
670 beep
671 Echo "Invalid Selection..."
672 ;;
673 esac
674 done
675
676#######################################################################
677# Print cable type
678#######################################################################
679
680 Echo
681 echo_line
682 case "$SIGNAL_TYPE" in
683 $SMART)
684 case "$CABLE_TYPE" in
685 $NORMAL)
686 if [ "$APC_HARDWARE_PROD" = "Symmetra" ]
687 then
688 Echo "You should have the cable, #940-1524C attached to $INST_TTY"
689 else
690 Echo "You should have the black cable, #940-0024C attached to $INST_TTY"
691 fi
692 ;;
693 $PNP)
694 Echo "You should have the grey cable, #940-0095A attached to $INST_TTY"
695 ;;
696 esac
697 ;;
698 $SIMPLE)
699 Echo "You should have the grey cable, #940-0023A attached to $INST_TTY"
700 ;;
701 esac
702 Echo "Please verify."
703 echo_line
704
705######################################################################
706# Determine if user wants to run command files as root
707######################################################################
708
709 Echo
710 echo_line
711 Echo "Command files may be executed with root privileges or with the"
712 Echo "privileges you assign to the pwrchute account (allowing you to"
713 Echo "customize command file execution according to your system"
714 Echo "requirements)."
715 echo_line
716
717 Echo
718 IsYNLoop "Do you want to execute command files as root?"
719 case "$?" in
720 $YES)
721 RUN_COMMAND_FILES_AS_ROOT=$TRUE
722 ;;
723 $NO)
724 RUN_COMMAND_FILES_AS_ROOT=$FALSE
725 ;;
726 esac
727
728######################################################################
729# Determine if user wants to send email as root
730######################################################################
731
732 Echo
733 echo_line
734 Echo "E-mail may be sent with root privileges or with the privileges you"
735 Echo "assign to the pwrchute account."
736 echo_line
737
738 Echo
739 IsYNLoop "Do you want to send e-mail as root?"
740 case "$?" in
741 $YES)
742 SEND_EMAIL_AS_ROOT=$TRUE
743 ;;
744 $NO)
745 SEND_EMAIL_AS_ROOT=$FALSE
746 ;;
747 esac
748
749
750#######################################################################
751# Print install info for customer verification
752#######################################################################
753
754 Echo
755 echo_line
756 Echo "PRODUCT : $FULL_PROD_NAME"
757 Echo "DEDICATED TTY : $INST_TTY"
758 case "$INST_HARDWARE" in
759 1) UPS_TYPE="Matrix-UPS"
760 ;;
761 2) UPS_TYPE="Smart-UPS"
762 ;;
763 3) UPS_TYPE="Back-UPS"
764 ;;
765 4) UPS_TYPE="Back-UPS Pro"
766 ;;
767 5) UPS_TYPE="Symmetra Power Array"
768 ;;
769 6) UPS_TYPE="Smart-UPS DP"
770 ;;
771 esac
772 Echo "UPS TYPE : $UPS_TYPE"
773 if [ $SIGNAL_TYPE = $SMART ] && [ $MEASURE_UPS -eq $TRUE ]
774 then
775 Echo "Measure-UPS INSTALLED : TRUE"
776 fi
777 if [ $SIGNAL_TYPE = $SMART ] && [ $MEASURE_UPS -eq $FALSE ]
778 then
779 Echo "Measure-UPS INSTALLED : FALSE"
780 fi
781
782 if [ $ROOT_USER -eq $TRUE ]
783 then
784 Echo "INSTALLING AS ROOT : TRUE"
785 else
786 Echo "INSTALLING AS ROOT : FALSE"
787 fi
788
789 if [ $USE_TCP -eq $TRUE ]
790 then
791 Echo "TCP/IP Installed : TRUE"
792 else
793 Echo "TCP/IP Installed : FALSE"
794 fi
795
796 if [ $RUN_COMMAND_FILES_AS_ROOT -eq $TRUE ]
797 then
798 Echo "RUN COMMAND FILES AS ROOT : TRUE"
799 else
800 Echo "RUN COMMAND FILES AS ROOT : FALSE"
801 fi
802
803 if [ $SEND_EMAIL_AS_ROOT -eq $TRUE ]
804 then
805 Echo "SEND EMAIL AS ROOT : TRUE"
806 else
807 Echo "SEND EMAIL AS ROOT : FALSE"
808 fi
809
810 echo_line
811 Echo
812
813#######################################################################
814# Allow customer to verify or quit
815#######################################################################
816
817IsYNLoop "Are the above selections correct?"
818case "$?" in
819 $NO)
820 Echo
821 Echo "Please rerun the $INST_SCRIPT_NAME script"
822 Echo "No actions taken."
823 Echo
824 exit
825 ;;
826esac
827
828#############################################################################
829# Check for binary compatibility
830#############################################################################
831 Echo
832 Echo "Checking for binary compatibility..."
833 rm -f machine_def
834 ./machine_id 2>&1
835 if [ ! -r machine_def ]
836 then
837 echo_line
838 Echo "INSTALL FAILURE: There does not appear to be binary compatibilty between"
839 Echo "installed product and this machine"
840 echo_line
841 Echo
842 exit
843 else
844 Echo "binary compatibility VERIFIED"
845 Echo
846 fi
847
848
849#############################################################################
850# Verify that chosen serial device is a valid tty
851#############################################################################
852 VALID_TTY=$FALSE
853 ./ttycheck "$INST_TTY"
854 case "$?" in
855 1)
856 VALID_TTY=$TRUE
857 Echo "$INST_TTY verified as a valid tty"
858 Echo
859 ;;
860 0)
861 echo_line
862 Echo "WARNING: $INST_TTY does not appear to be a valid tty"
863 echo_line
864 beep
865 sleep 3
866 ;;
867 *)
868 echo_line
869 Echo "WARNING: General tty verification failure."
870 echo_line
871 beep
872 sleep 3
873 ;;
874 esac
875
876#############################################################################
877# See what we can determine about the port.
878#############################################################################
879 if [ $SKIP_PORT_VERIFICATION -eq $FALSE ]
880 then
881 Echo "The following Port validations for $INST_TTY may take a few moments...."
882 sleep 2
883 if [ $VALID_TTY -eq $TRUE ]
884 then
885 ./portcheck "$INST_TTY"
886 case "$?" in
887 1)
888 IS_MODEM_PORT=$TRUE
889 IS_LOCAL_PORT=$FALSE
890 Echo "$INST_TTY appears to be a modem control port"
891 sleep 1
892 ;;
893 2)
894 IS_MODEM_PORT=$FALSE
895 IS_LOCAL_PORT=$TRUE
896 Echo "$INST_TTY appears to be a local control port"
897 sleep 1
898 ;;
899 *)
900 beep
901 echo_line
902 Echo "Could not determine port type!"
903 echo_line
904 sleep 1
905 ;;
906 esac
907 fi
908
909 if [ $IS_MODEM_PORT -eq $TRUE ] && [ $SIGNAL_TYPE = $SMART ]
910 then
911 echo_line
912 beep
913 Echo "WARNING: Port must be configured for local control in order to work with a"
914 Echo "\"Smart\" Signaling UPS"
915 echo_line
916 Echo
917 HitAnyKey
918 fi
919
920 if [ $IS_LOCAL_PORT -eq $TRUE ] && [ $SIGNAL_TYPE = $SIMPLE ]
921 then
922 echo_line
923 beep
924 Echo "WARNING: Port must be configured for modem control in order to work with a"
925 Echo "\"Simple\" Signaling UPS"
926 echo_line
927 Echo
928 HitAnyKey
929 fi
930 Echo
931 fi
932
933
934
935
936#############################################################################
937# Modify OS system files for shutdown
938#############################################################################
939 modify_files=`grep -q -s -c POWERCHUTE /etc/rc.d/init.d/halt`
940 if [ "$modify_files" -eq 0 ]
941 then
942 Echo "making backup copy of shutdown files..."
943 cp $SHUTDOWN_FILE $SHUTDOWN_FILE.tmp
944 cp $SHUTDOWN_FILE $SHUTDOWN_FILE_BACKUP
945
946 Echo "modifying shutdown files...."
947
948 if [ -r $SHUTDOWN_FILE.tmp ]
949 then
950 rm -f $SHUTDOWN_FILE
951 else
952 echo_line
953 beep
954 Echo "Unable to find temp file $SHUTDOWN_FILE.tmp. Quitting."
955 echo_line
956 Quit
957 fi
958 sed "/$SHUTDOWN_SEARCH_STRING/ a\\
959 $SHUTDOWN_COMMAND_STRING" $SHUTDOWN_FILE.tmp > $SHUTDOWN_FILE
960 if [ ! -r $SHUTDOWN_FILE ]
961 then
962 echo_line
963 beep
964 Echo "Error writing $SHUTDOWN_FILE! Original can be found in\n$INSTALL_PATH/$SYSFILES_BACKUP_REPOSITORY. Quitting."
965 echo_line
966 exit
967 else
968 rm -f $SHUTDOWN_FILE.tmp
969 fi
970 chmod 754 $SHUTDOWN_FILE
971 fi
972
973
974#############################################################################
975# Verify we can communicate with UPS
976#############################################################################
977 cd /usr/lib/powerchute
978 RETRY=$TRUE
979 RE=
980 if [ $VALID_TTY -eq $TRUE ] && [ $IS_MODEM_PORT -eq $FALSE ]
981 then
982 while [ $RETRY -eq $TRUE ]
983 do
984 ./upswrite $INST_TTY $CABLE_TYPE verify
985 if [ $? -eq 5 ]
986 then
987 COMM_VERIFIED=$TRUE
988 RETRY=$FALSE
989 Echo
990 Echo "UPS communications on $INST_TTY verified"
991 Echo "Done."
992 Echo
993 else
994 Echo
995 echo_line
996 Echo "WARNING: Could not communicate with device on $INST_TTY."
997 Echo "Check that the communications cable is attached properly to both the device"
998 Echo "and the serial port."
999 beep
1000 echo_line
1001 Echo "NOTE: Though the $FULL_PROD_NAME installation is complete, if you "
1002 Echo "quit before verifying communications, the application may not work properly"
1003 echo_line
1004 VALID_RE=$FALSE
1005 while [ $VALID_RE -eq $FALSE ]
1006 do
1007 Echo "Do you wish to Exit or Retry communications? [R/E] \\c"
1008 read RE
1009 case "$RE" in
1010 [Rr]*)
1011 RETRY=$TRUE
1012 VALID_RE=$TRUE
1013 ;;
1014 [Ee]*)
1015 COMM_VERIFIED=$FALSE
1016 RETRY=$FALSE
1017 VALID_RE=$TRUE
1018 ;;
1019 esac
1020 done
1021 fi
1022 done
1023
1024 elif [ $IS_LOCAL_PORT -eq $TRUE ]
1025 then
1026 echo_line
1027 Echo "WARNING: Due to tty verification failure, the install"
1028 Echo "will be unable to test UPS communications."
1029 echo_line
1030 beep
1031 sleep 3
1032 fi
1033
1034#############################################################################
1035# Modify the powerchute.ini file
1036#############################################################################
1037 cd /usr/lib/powerchute
1038 rm -f /tmp/temp_ini.in
1039 rm -f /tmp/temp_ini.out
1040 cp powerchute.ini_templ /tmp/temp_ini.in
1041 cp /etc/powerchute.ini /etc/powerchute_ini.bak
1042
1043 sed s!GSUB_TTY_HERE!$INST_TTY!g /tmp/temp_ini.in > /tmp/temp_ini.out
1044 CopyOutToIn
1045 sed s/GSUB_SIGTYPE_HERE/$SIGNAL_TYPE/g /tmp/temp_ini.in > /tmp/temp_ini.out
1046 CopyOutToIn
1047 if [ $MEASURE_UPS -eq $TRUE ]
1048 then
1049 sed s/GSUB_MUPS_HERE/YES/g /tmp/temp_ini.in > /tmp/temp_ini.out
1050 else
1051 sed s/GSUB_MUPS_HERE/NO/g /tmp/temp_ini.in > /tmp/temp_ini.out
1052 fi
1053 CopyOutToIn
1054 if [ $UI_MONO_COLOR_SCHEME -eq $TRUE ]
1055 then
1056 sed "s/GSUB_UI_WARNCOLOR_HERE/$MONO_WARN_COLOR_STRING/g" /tmp/temp_ini.in > /tmp/temp_ini.out
1057 else
1058 sed "/GSUB_UI_WARNCOLOR_HERE/d" /tmp/temp_ini.in > /tmp/temp_ini.out
1059 fi
1060 CopyOutToIn
1061 if [ $UI_MONO_COLOR_SCHEME -eq $TRUE ]
1062 then
1063 sed "s/GSUB_UI_ERRCOLOR_HERE/$MONO_ERR_COLOR_STRING/g" /tmp/temp_ini.in > /tmp/temp_ini.out
1064 else
1065 sed "/GSUB_UI_ERRCOLOR_HERE/d" /tmp/temp_ini.in > /tmp/temp_ini.out
1066 fi
1067 CopyOutToIn
1068 sed s!GSUB_ALLOWED_PORTS_HERE!$ALLOWED_PORT_NAMES!g /tmp/temp_ini.in > /tmp/temp_ini.out
1069 CopyOutToIn
1070 if [ $USE_TCP -eq $TRUE ]
1071 then
1072 sed s/GSUB_USETCP_HERE/YES/g /tmp/temp_ini.in > /tmp/temp_ini.out
1073 else
1074 sed s/GSUB_USETCP_HERE/NO/g /tmp/temp_ini.in > /tmp/temp_ini.out
1075 fi
1076 CopyOutToIn
1077 sed s/GSUB_CHANGE1_HERE/"$SYMSTR1"/g /tmp/temp_ini.in > /tmp/temp_ini.out
1078 CopyOutToIn
1079 sed s/GSUB_CHANGE2_HERE/"$SYMSTR2"/g /tmp/temp_ini.in > /tmp/temp_ini.out
1080 CopyOutToIn
1081 sed s/GSUB_TIMEOUT_HERE/"$SYMSTR13"/g /tmp/temp_ini.in > /tmp/temp_ini.out
1082 CopyOutToIn
1083 sed s/GSUB_ACTIONS_HERE/"$SYMSTR3"/g /tmp/temp_ini.in > /tmp/temp_ini.out
1084 CopyOutToIn
1085 if [ $RUN_COMMAND_FILES_AS_ROOT -eq $TRUE ]
1086 then
1087 sed s/GSUB_COMMAND_FILES_AS_ROOT_HERE/YES/g /tmp/temp_ini.in > /tmp/temp_ini.out
1088 else
1089 sed s/GSUB_COMMAND_FILES_AS_ROOT_HERE/NO/g /tmp/temp_ini.in > /tmp/temp_ini.out
1090 fi
1091 CopyOutToIn
1092 if [ $SEND_EMAIL_AS_ROOT -eq $TRUE ]
1093 then
1094 sed s/GSUB_SEND_EMAIL_AS_ROOT_HERE/YES/g /tmp/temp_ini.in > /tmp/temp_ini.out
1095 else
1096 sed s/GSUB_SEND_EMAIL_AS_ROOT_HERE/NO/g /tmp/temp_ini.in > /tmp/temp_ini.out
1097 fi
1098 CopyOutToIn
1099 if [ -n "$MODEM_PORT_NAME" ]
1100 then
1101 sed s!GSUB_MODEM_PORT_NAME!$MODEM_PORT_NAME!g /tmp/temp_ini.in > /tmp/temp_ini.out
1102 else
1103 sed s/GSUB_MODEM_PORT_NAME/""/g /tmp/temp_ini.in > /tmp/temp_ini.out
1104 fi
1105 CopyOutToIn
1106 sed s!GSUB_CABLE_TYPE_HERE!$CABLE_TYPE!g /tmp/temp_ini.in > /tmp/temp_ini.out
1107 CopyOutToIn
1108 if [ -n "$MODEM_ALLOWED_PORT_NAMES" ]
1109 then
1110 sed s!GSUB_MODEM_ALLOWED_PORT_NAMES!$MODEM_ALLOWED_PORT_NAMES!g /tmp/temp_ini.in > /tmp/temp_ini.out
1111 else
1112 sed s/GSUB_MODEM_ALLOWED_PORT_NAMES/""/g /tmp/temp_ini.in > /tmp/temp_ini.out
1113 fi
1114
1115 cp -f /tmp/temp_ini.out /etc/powerchute.ini
1116 rm -f /tmp/temp_ini.in
1117 rm -f /tmp/temp_ini.out
1118
1119
1120############################################################################
1121# Make EEPROM adjustments
1122############################################################################
1123 if [ $COMM_VERIFIED -eq $TRUE ] && [ $SIGNAL_TYPE = $SMART ]
1124 then
1125
1126 CheckEepromUps "p" $INST_TTY
1127 if [ "$?" -eq $TRUE ]
1128 then
1129 beep
1130 echo_line
1131 Echo "Due to the amount of time it can take Unix platforms to shutdown,"
1132 Echo "it is sometimes necessary to increase the eeprom parameter UpsTurnOffDelay"
1133 Echo "within the UPS. This is in order to allow sufficient time for the"
1134 Echo "Operating System to shutdown completely."
1135 echo_line
1136 Echo "* Doing this is recommended for the Linux Operating System *"
1137 echo_line
1138
1139 IsYNLoop "Do you wish to increment the UpsTurnOffDelay to its next highest\nvalue now?"
1140 if [ "$?" -eq $YES ]
1141 then
1142 CheckDipSwitches $INST_TTY
1143 if [ "$?" -eq $TRUE ]
1144 then
1145 Echo "Please wait.\\c"
1146 desired_val="180"
1147 GetNextEepromValueGreaterThan "p" "20" $INST_TTY
1148 next_value="$?"
1149 if [ "$next_value" -ne "-1" ]
1150 then
1151 desired_val=$next_value
1152 fi
1153
1154 current_val="20"
1155 GetCurrentEepromSetting "p" $INST_TTY
1156 current_eeprom="$?"
1157 if [ "$current_eeprom" -ne "-1" ]
1158 then
1159 current_val="$current_eeprom"
1160 fi
1161
1162 CycleUntilAcceptableValue "p" "$current_val" "$desired_val" "$INST_TTY"
1163 if [ "$?" -eq $TRUE ]
1164 then
1165 Echo
1166 beep
1167 Echo "UpsTurnOffDelay successfully set at $desired_val."
1168 fi
1169 fi
1170 fi
1171 else
1172 Echo "Eeproms okay."
1173 fi
1174 fi
1175
1176############################################################################
1177# Add pwrchute user account
1178############################################################################
1179 if [ $USE_TCP -eq $TRUE ]
1180 then
1181 pwrchute_exists=`grep -c pwrchute /etc/passwd`
1182 if [ $pwrchute_exists -eq 0 ]
1183 then
1184 Echo
1185 Echo "The PowerChute plus User Interface will prompt you for a password when you attempt"
1186 Echo "to connect to the upsd daemon running on this machine. This password is the"
1187 Echo "password of the pwrchute user account."
1188 Echo
1189 Echo "Adding a pwrchute user account"
1190 /usr/sbin/useradd pwrchute
1191 Echo "Please set the password for the pwrchute user account."
1192 /usr/bin/passwd pwrchute
1193 fi
1194 fi
1195
1196############################################################################
1197# Done!
1198############################################################################
1199
1200 echo_line
1201 Echo "$FULL_PROD_NAME Installation complete. You will need to reboot"
1202 Echo "in order to start the application"
1203 echo_line
1204
1205 if [ $COMM_VERIFIED -eq $FALSE ]
1206 then
1207 echo_line
1208 Echo "WARNING: Serial communications never verified, the installed product may"
1209 Echo "not work properly. You may want to try the following:"
1210 Echo
1211 Echo " 1) Check that specified serial device exists."
1212 Echo " 2) Check the device configuration is appropriate for your UPS type"
1213 Echo " 3) Rebuild or create the serial device using the utility appropriate "
1214 Echo " for your system."
1215 Echo
1216 echo_line
1217 fi
This page took 0.301512 seconds and 4 git commands to generate.