Hjälp med bash script

Programmering

2 svar · 1 237 visningar · startad av Nate.A

Medlem sedan mars 2006296 inlägg
Trådstart#1

Hej!

Vi har haft en utvecklingsserver (LAMP m. Debian) på kontoret några månader nu och jag tänkte klämma lite mer nytta ur den via ett enkelt bash script som ska kontrollera om kunders servrar är tillgängliga men jag får inte till det riktigt.

Själva kontrollen fungerar men variablerna index, count och sites är tomma trots att en server är nere. Vad har jag gjort för fel?

#!/bin/bash

FILENAME="/var/www/check_these_servers.txt"
COUNT=0
INDEX=0
SITES=""

cat $FILENAME | while read LINE
do
	if curl -s --head $LINE | grep "200 OK" > /dev/null
		then 
			echo "$LINE OK!"
		else
			echo "$LINE DOWN!"
			# add count errors
			COUNT=$[$COUNT + 1]
			SITES="$LINE, $SITES"
	fi
	INDEX=$[$INDEX + 1]
done
	
echo "$INDEX Servers checked, $COUNT servers failed ($SITES)"
	
if [ $COUNT -gt 0 ]
	then
		echo "Hej\n\nServrar ligger nere!\n\n\n$SITES" | mail -s "$COUNT server är nere" min.mai@foretaget.se
fi
Medlem sedan jan. 2007177 inlägg
#2

Motsvarande problem, med lösning och referens till manualen som förklarar detta "varable scope" problem finns t.ex på

http://stackoverflow.com/questions/124167/bash-variable-scope

Medlem sedan mars 2006296 inlägg
#3

Tack! Nu funkar det. :)

FILENAME="/var/www/check_these_servers.txt"
let COUNT=0
let INDEX=0
SITES=""

while read LINE
do
	if curl -s --head $LINE | grep "200 OK" > /dev/null
		then 
			echo "$LINE OK!"
		else
			echo "$LINE DOWN!"
			# add count errors
			let COUNT++
			SITES="$LINE\n$SITES"
	fi
	let INDEX++
done < $FILENAME
	
echo "$INDEX Servers checked, $COUNT Servers failed"
	
if [ $COUNT -gt 0 ]
	then
		echo -e "Servrar offline!\n$SITES" | mail -s "$COUNT server(s) offline" min.mail@foretaget.se
fi
257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)