Gå til innhold

Linux Shell Scripting - hvordan looper jeg?


Anbefalte innlegg

Hei!

 

Jeg har klart å sope sammen et script som fungerer uten loop, men jeg vil ha det kjørende helt til jeg stopper det. Derfor la jeg inn en sleep timer og forsøkte å loope det, men jeg får det ikke til. Er det noen kloke hoder som kan hjelpe meg?

 

Slik ser det ut:

 

# Mailoppsett
SUBJECT="mailsubjecther"
EMAILID="mailher"
#
# Noder som skal pinges
HOSTS="
127.0.0.1
"
#
#
SLAPPEAV=60
#
#
#Antall ping som skal sendes, må få reply på samtlige for at node skal rapporteres som oppe
COUNT=3
fnSTART()
{
for myHost in $HOSTS
do
 count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
 if [ $count -eq 3 ]; then
		echo "Host : $myHost is up (ping successfull) at $(date)" | mail -s "$SUBJECT" $EMAILID;
				sed "/$myHost/d" pong.sh > tempfile.txt; mv tempfile.txt pong.sh
fi
}
sleep $SLAPPEAV
fnSTART
done

Lenke til kommentar
Videoannonse
Annonse
  • 2 uker senere...

Jeg har klart å sope sammen et script som fungerer uten loop, men jeg vil ha det kjørende helt til jeg stopper det.

 

Du sier ingenting om hvordan du ønsker å stoppe det. Men hvis du f.eks vil stoppe det med control-c kan du gjøre noe som f.eks:

 

#!/bin/sh

trap cleanup INT

cleanup()
{
 echo "caught signal ..."
 exit 1
}

while true
do
echo "hello, it's now $(date)"
sleep 3
done

 

EDIT: du kan kalle fnSTART funksjonen din der jeg har echo hello...

Endret av asicman
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...