webForumDet fria alternativet

Hjälp med bash script

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

Nate.AMedlem sedan mars 2006280 inlägg
#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
i2n2Medlem sedan jan. 2007175 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

Nate.AMedlem sedan mars 2006280 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
Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb