Files
rmachines/rmachines.sh
2012-01-26 06:23:16 +01:00

93 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
################################################################################
# #
# Copyright (C) 2011 Jack-Benny Persson <jake@cyberinfo.se> #
# #
# 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. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
################################################################################
### rMachines version 0.1 ###
### Add your machines to MACHINES. WEBPAGE is the output HTML file.
### The HTML file must to writable by the user running the script.
### If you add the -d option to the script, it will run over and over
### again and update the info every $SLEEP seconds. Add a & to run it
### in the background. For a cron job, don't add the -d option!
### RUSER is the remote user account. That user must have a valid SSH key.
MACHINES=("localhost host2 host3 host4")
WEBPAGE="test.html"
SLEEP=30
RUSER="jake"
##Sanity checks
if [ ! -w "$WEBPAGE" ]; then
printf "You don't have write permission to ${WEBPAGE}\n";
exit 192
fi
for i in ${MACHINES[*]}; do
ssh -o PasswordAuthentication=no -l ${RUSER} $i uptime > /dev/null
if [ "$?" -gt 0 ]; then
printf "There was a problem accessing $i \n"
exit 192
fi
done
#Main routine (run checks and build HTML page)
Main()
{
printf "<html><head><title>My rMachines</title></head>\n<body>\n\n" >\
${WEBPAGE}
printf "<h1>\nMy rMachines\n</h1>\n" >> ${WEBPAGE}
printf "" >> ${WEBPAGE}
for i in ${MACHINES[*]}; do
printf "<b>$i</b>" >> ${WEBPAGE}
printf "\n<br>\n======================\n<br>\n" >> ${WEBPAGE}
ssh -l ${RUSER} $i uptime >> ${WEBPAGE}
printf "<br>\n" >> ${WEBPAGE}
ssh -l ${RUSER} $i who >> ${WEBPAGE}
printf "<p>\n" >> ${WEBPAGE}
done
printf "\n\n</body>\n" >> ${WEBPAGE}
printf "</html>\n" >> ${WEBPAGE}
}
## Check if we want to run the script infinitive times (for background jobs)
if [[ "$1" = "-d" ]]; then
while true
do
Main
sleep ${SLEEP}
done
## Run just once (for cron jobs)
else
Main
fi
exit 0