Upload files to ''
This commit is contained in:
parent
ce4a32b812
commit
e1f4ff6c6d
89
pducontrol.sh
Normal file
89
pducontrol.sh
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# AUTHOR: Josh North
|
||||||
|
# EMAIL: josh.north@point808.com
|
||||||
|
# BRIEF: Script to control dumb telnet-accessible power strips. Created with
|
||||||
|
# clean output for use in Home Assistant or other automation but could
|
||||||
|
# be used as a standalone app as well.
|
||||||
|
# USAGE: Make it executeable and run with -h to get usage flags.
|
||||||
|
# You will also probably want to set up a cron task to make it run as a
|
||||||
|
# sort of fake service.
|
||||||
|
# SETTINGS:
|
||||||
|
TEMPDIR="/tmp"
|
||||||
|
SCRIPTNAME=${0##*/}
|
||||||
|
show_help()
|
||||||
|
{
|
||||||
|
echo "
|
||||||
|
USAGE: $0 [-h] [-d device] [-s plug] [-o plug] [-f plug] [-p]
|
||||||
|
-h Help - show this help text
|
||||||
|
-d fqdn Device - FQDN or IP of device to control
|
||||||
|
-s plug Status of given plug #
|
||||||
|
-o plug Turn ON given plug #
|
||||||
|
-f plug Turn OFF given plug #
|
||||||
|
-p Process pending jobs (to be called from cron, ex below)
|
||||||
|
* * * * * ${0} --host pdu01 --process >/dev/null 2>&1
|
||||||
|
* * * * * sleep 10; ${0} --host pdu01 --process >/dev/null 2>&1
|
||||||
|
* * * * * sleep 20; ${0} --host pdu01 --process >/dev/null 2>&1
|
||||||
|
* * * * * sleep 30; ${0} --host pdu01 --process >/dev/null 2>&1
|
||||||
|
* * * * * sleep 40; ${0} --host pdu01 --process >/dev/null 2>&1
|
||||||
|
* * * * * sleep 50; ${0} --host pdu01 --process >/dev/null 2>&1
|
||||||
|
"
|
||||||
|
}
|
||||||
|
OPTIND=1
|
||||||
|
while getopts ":o:f:s:d:ph" FLAG; do
|
||||||
|
case "$FLAG" in
|
||||||
|
d)
|
||||||
|
HOST=$OPTARG
|
||||||
|
;;
|
||||||
|
o)
|
||||||
|
ON=$OPTARG
|
||||||
|
;;
|
||||||
|
f)
|
||||||
|
OFF=$OPTARG
|
||||||
|
;;
|
||||||
|
s)
|
||||||
|
STATUS=$OPTARG
|
||||||
|
;;
|
||||||
|
p)
|
||||||
|
PROCESS=1
|
||||||
|
;;
|
||||||
|
h)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
echo "Invalid option: -$OPTARG. Use -h flag for usage instructions."
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
if [ -z ${STATUS} ]
|
||||||
|
then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
cat $TEMPDIR/$SCRIPTNAME-$HOST-STATUS | grep -A 6 'Plug | Name' | grep -A 5 '+--------' | grep -v '+--------' | awk '$1 ~ /^'$STATUS'$/{ print $7; }'
|
||||||
|
fi
|
||||||
|
if [ -z ${ON} ]
|
||||||
|
then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
echo "/On $ON" >> $TEMPDIR/$SCRIPTNAME-$HOST-QUEUE
|
||||||
|
fi
|
||||||
|
if [ -z ${OFF} ]
|
||||||
|
then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
echo "/Off $OFF" >> $TEMPDIR/$SCRIPTNAME-$HOST-QUEUE
|
||||||
|
fi
|
||||||
|
if [ -z ${PROCESS} ]
|
||||||
|
then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
if [ -f $TEMPDIR/$SCRIPTNAME-$HOST-QUEUE ]; then
|
||||||
|
echo "/S" >> $TEMPDIR/$SCRIPTNAME-$HOST-QUEUE
|
||||||
|
echo "/X" >> $TEMPDIR/$SCRIPTNAME-$HOST-QUEUE
|
||||||
|
{ cat $TEMPDIR/$SCRIPTNAME-$HOST-QUEUE; sleep 1; } | telnet $HOST > $TEMPDIR/$SCRIPTNAME-$HOST-STATUS 2>/dev/null
|
||||||
|
truncate -s 0 $TEMPDIR/$SCRIPTNAME-$HOST-QUEUE
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit
|
Loading…
Reference in New Issue
Block a user