diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
commit | 47e6e7c84f008a53061e661f31ae96629bc694ef (patch) | |
tree | 648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /src/pmdas/shping/Install | |
download | pcp-debian/3.9.10.tar.gz |
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'src/pmdas/shping/Install')
-rwxr-xr-x | src/pmdas/shping/Install | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/src/pmdas/shping/Install b/src/pmdas/shping/Install new file mode 100755 index 0000000..bcca1b1 --- /dev/null +++ b/src/pmdas/shping/Install @@ -0,0 +1,222 @@ +#! /bin/sh +# +# Copyright (c) 1997,2003 Silicon Graphics, Inc. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# Install the shping PMDA and/or PMNS +# + +. $PCP_DIR/etc/pcp.env +. $PCP_SHARE_DIR/lib/pmdaproc.sh + +iam=shping +pmda_interface=2 +forced_restart=false + +# Do it +# +pmdaSetup + +# controls for installation procedures +# +daemon_opt=true # can install as daemon +dso_opt=false +pipe_opt=true # supports pipe IPC +socket_opt=false # force pipe IPC +check_delay=10 # give the PMDA a chance to set itself up + +# be careful that mortals cannot write any configuration files, as +# these would present a security problem +# +umask 022 + + +# PMDA variables +# +tmp=`mktemp -d /tmp/pcp.XXXXXXXXX` || exit 1 +configfile="" +cycle=120 +timeout=20 +debug=0 + +trap "rm -rf $tmp; exit" 0 1 2 3 15 + +_quit() +{ + rm -rf $tmp + exit $1 +} + +do_debug=false + +_parsedefaults() +{ + echo "Extracting options from current installation ..." + while getopts D:I:d:l:t: c + do + case $c in + \?) echo "Warning: Unrecognized option in $PCP_PMCDCONF_PATH" + echo " Remove line for the $iam PMDA in $PCP_PMCDCONF_PATH and re-run ./Install" + _quit 2;; + D ) debug=$OPTARG;; + I ) cycle=$OPTARG;; + t ) timeout=$OPTARG;; + * ) ;; + esac + done + eval configfile='$'$OPTIND +} + +if $do_pmda +then + + # set options from $PCP_PMCDCONF_PATH, if possible + # + ans=`$PCP_AWK_PROG <$PCP_PMCDCONF_PATH ' +$1 == "'$iam'" { printf "%s",$6 + for (i=7;i<=NF;i++) printf " %s",$i + print "" + }'` + if [ ! -z "$ans" ] + then + _parsedefaults $ans + fi + + default_configfile=./sample.conf + if fgrep "CONFIGURE-ME-PLEASE" $default_configfile >/dev/null + then + # nslookup(1) may be hiding, like for OpenIndiana + # + export PATH=$PATH:/usr/sbin + nslookup=`which nslookup 2>/dev/null` + if [ -z "$nslookup" ] + then + echo "Warning: cannot find nslookup" + nslookup=nslookup + fi + # sample configuration file needs a little customization + # + if [ -f /etc/resolv.conf ] + then + my_dns_server=`$PCP_AWK_PROG </etc/resolv.conf '$1 == "nameserver" { print $2; exit }'` + else + my_dns_server=`hostname` + fi + sed <$default_configfile >$tmp/tmp \ + -e '/CONFIGURE-ME-PLEASE/d' \ + -e "s@DEFAULT-DNS-SERVER@$my_dns_server@" \ + -e "s@NSLOOKUP@$nslookup@" + cp $tmp/tmp $default_configfile + fi + + # go figure out which configuration file to use ... + # + pmdaChooseConfigFile + + if [ ! -f "$configfile" ] + then + $PCP_ECHO_PROG $PCP_ECHO_N "Do you wish to enter commands to create a new configuration file? [y] ""$PCP_ECHO_C" + read ans + if [ "X$ans" = "Xy" -o "X$ans" = "XY" -o -z "$ans" ] + then + configfile="$configdir/$iam.conf" + if [ -f $configfile ] + then + echo "Removing old configuration file \"$configfile\"" + rm -f $configfile + if [ -f $configfile ] + then + echo "Cannot remove \"$configfile\"" + _quit 1 + fi + fi + + echo + echo \ +'Enter one ping specification per line, in the format + +tag command line details + +where the "tag" is a single unique word (no spaces) and the "command line +details" are the corresponding sh(1) command. For example + +dns-self nslookup `hostname` + +An empty line terminates the specification process and there must be at +least one specification. +' + + args="" + touch $configfile + if [ ! -f $configfile ] + then + echo "Installation aborted." + _quit 1 + fi + + while [ ! -s "$configfile" ] + do + while true + do + $PCP_ECHO_PROG $PCP_ECHO_N "Tag Command: ""$PCP_ECHO_C" + read tag cmd + [ -z "$tag" ] && break + if grep "^$tag " $configfile >/dev/null + then + echo "Sorry, tag \"$tag\" already in use. Please try again." + continue + fi + echo "$tag $cmd" >>$configfile + done + done + else + echo "" + echo "Error: Abandoning installation as no configuration file was specified." + _quit 1 + fi + fi + + echo + echo "All commands are run one after another as a group and the group is run" + $PCP_ECHO_PROG $PCP_ECHO_N "once per \"cycle\" time. Enter the cycle time in seconds [$cycle] ""$PCP_ECHO_C" + read ans + if [ ! -z "$ans" ] + then + cycle=$ans + fi + + echo + echo "Each command must complete within a timeout period, or it will be aborted" + $PCP_ECHO_PROG $PCP_ECHO_N "by the \"$iam\" PMDA. Enter the timeout period (in seconds) [$timeout] ""$PCP_ECHO_C" + read ans + if [ ! -z "$ans" ] + then + timeout=$ans + fi + + if [ "$do_debug" = true ] + then + echo + $PCP_ECHO_PROG $PCP_ECHO_N "Enter the debugging flag (see pmdbg(1)) [$debug] ""$PCP_ECHO_C" + read ans + if [ ! -z "$ans" ] + then + debug=$ans + fi + fi + + args="-I $cycle -t $timeout -D $debug $configfile" +fi + +pmdaInstall + +_quit 0 |