]> git.pld-linux.org Git - packages/PowerChutePlus.git/blob - PowerChutePlus-Config.sh
- tabs in preamble
[packages/PowerChutePlus.git] / PowerChutePlus-Config.sh
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 # --------------------------------------------------------------------------
20 FALSE=1
21 TRUE=0
22
23 YES=0
24 NO=1
25 QUIT=2
26 INVALID=99
27
28 SMART="smart"
29 SIMPLE="simple"
30 PNP="PNP"
31 NORMAL="Normal"
32
33 NOT_SYM1="Bad battery"
34 SYM=""
35 NOT_SYM2="UPS on bypass"
36 SYM2="UPS"
37 NOT_SYM3=""
38 SYM10="TimeOutFactor = 20"
39 SYM11="UPS system is in maintenance bypass set by switch"
40 NOT_SYM4="UPS on bypass: user set via rear switch"
41 SYM5="Actions = LUS"
42 NOT_SYM5="Actions = LU"
43
44 FULL_PROD_NAME="PowerChute Plus for Unix"
45 PROD_HEADER="4.5.2"
46 INST_SCRIPT_NAME=$0
47 LINUX_INTEL_STRING="Linux"
48 OS_NAME="$LINUX_INTEL_STRING"
49 MONO_WARN_COLOR_STRING="WarningColor = LightGray"
50 MONO_ERR_COLOR_STRING="ErrorColor = LightGray"
51 TTY1="/dev/ttyS0"
52 TTY2="/dev/ttyS1"
53 SHUTDOWN_SEARCH_STRING="swapoff -a"
54 STARTUP_FILE_PATH="/etc/rc.d/init.d"
55 STARTUP_FILE="$STARTUP_FILE_PATH/upsd"
56 STARTUP_RC_PATH="/etc/rc.d"
57 MODEM_ALLOWED_PORT_NAMES="/dev/modem,/dev/ttyS0,/dev/ttyS1"
58 MODEM_PORT_NAME="/dev/modem"
59 SHUTDOWN_FILE="/etc/rc.d/init.d/halt"
60 SHUTDOWN_FILE_BACKUP="/usr/lib/powerchute/halt"
61 SHUTDOWN_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
69 COMM_VERIFIED=$FALSE
70 IS_MODEM_PORT=$FALSE
71 IS_LOCAL_PORT=$FALSE
72 SKIP_PORT_VERIFICATION=$FALSE
73
74 # Variables that start uninitialized
75 ALLOWED_PORT_NAMES=
76 APC_HARDWARE_PROD=
77 CABLE_TYPE=
78 INST_HARDWARE=
79 INST_TTY=
80 MEASURE_UPS=
81 ROOT_USER=
82 RUN_COMMAND_FILES_AS_ROOT=
83 SEND_EMAIL_AS_ROOT=
84 SIGNAL_TYPE=
85 UI_MONO_COLOR_SCHEME=
86 USE_TCP=
87 VALID_TTY_SELECTED=
88 WEB_BROWSER=
89
90 #######################
91 # Functions used below
92 #######################
93
94 ###########################################################################
95 # IsYN handles Yes No responses
96 ###########################################################################
97 Echo() {
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
114 echo_line() {
115         Echo "----------------------------------------------------------------------------"
116 }
117
118
119
120 HitAnyKey() {
121         default="Press Enter to continue"
122         string=${1:-$default}
123         Echo "$string \\c"
124         read tmp_strike
125 }
126
127
128 beep() {
129         Echo "\a\\c"
130 }
131
132 IsYN(){
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
167 IsYNLoop() {
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
185 CheckEepromUps() {
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
224 CheckDipSwitches() {
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.
288 GetCurrentEepromSetting() {
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. 
313 GetNextEepromValueGreaterThan() {   
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
351 CycleUntilAcceptableValue() {
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
385 CopyOutToIn() {
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
394 trap 'Echo \\nsignal caught, Quitting.;exit' 1 2 15
395
396 # ---------------------------------------------------------------------
397 # ----------------------------- Start ---------------------------------
398 # ---------------------------------------------------------------------
399 cd /usr/lib/powerchute
400
401
402 #######################################################################
403 # Print Banner
404 #######################################################################
405 Echo "-----------------------------------------------------------------------"
406 Echo "     PowerChute Plus for Linux v$PROD_HEADER Configuration Script"
407 Echo "             Copyright American Power Conversion 1999"
408 Echo "-----------------------------------------------------------------------"
409 Echo
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
817 IsYNLoop "Are the above selections correct?"
818 case "$?" in
819         $NO)
820                 Echo 
821                 Echo "Please rerun the $INST_SCRIPT_NAME script"
822                 Echo "No actions taken."
823                 Echo 
824                 exit
825                 ;;
826 esac
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.333975 seconds and 3 git commands to generate.