[Shell scripting] Ctrl+C simuleren

Pagina: 1
Acties:

  • krietjur
  • Registratie: Februari 2001
  • Nu online

krietjur

Where am I?

Topicstarter
Ik ben bezig met een script dat door middel van een telnet connectie moet controleren of een server online is. Als deze de statuscode 220 terugkrijgt dan is alles prima, draait de server niet dan komt simpelweg de melding "connection refused", er is dus geen statuscode 220 dus de server ligt plat. Tot zover werkt m'n script prima, maar ik voorzie een mogelijk probleem als de server wel draait, maar dusdanig "hangt" dat geen statuscode gegeven wordt, en de verbinding wel blijft bestaan. Als je normaal handmatig met telnet checked zou je dit zien, en druk je op ctrl+c om af te breken, maar nu is het dus de bedoeling dat het script dit doet.

Even een stukje uit de code:
code:
1
2
3
4
5
6
7
telnetPipe()
{
sleep 3
echo -e quit
}

telnetPipe|telnet $SERVER_ADDR $SERVER_PORT > $TMP_FILE


Dit werkt prima, maar mocht de server dus niet reageren dan zou het script hier lang blijven hangen, ik zou dus bijvoorbeeld na bijv. 10 seconden willen dat er op "ctrl+c" gedrukt wordt, waarna het script gewoon verder gaat met de rest van de code. Is dit mogelijk, zoja hoe?

  • windancer
  • Registratie: Maart 2000
  • Laatst online: 18-08 22:36
Want je misschien kunt doen ik de process-ID van het telnet proces zoeken en het killen met kill -9 <pid>

  • krietjur
  • Registratie: Februari 2001
  • Nu online

krietjur

Where am I?

Topicstarter
Hmm.. maar het is niet mogelijk om ctrl+c te simuleren?
Hoe kan ik dan opvragen wat het PID is van het telnet proces wat ik heb opgestart?

  • Arioch
  • Registratie: Maart 2002
  • Laatst online: 10-07 18:08

Arioch

<geek>

code:
1
exit 0

  • krietjur
  • Registratie: Februari 2001
  • Nu online

krietjur

Where am I?

Topicstarter
Hmm ik heb het nu als volgt opgelost:
code:
1
2
3
4
5
6
7
8
telnetPipe()
{
  sleep 3
  echo -e quit
}
telnetPipe|telnet $SERVER_ADDR $SERVER_PORT > $TMP_FILE &
sleep 15
kill -9 $!

Kortom, het script wordt na 15 secondes gekilled. Dit werkt allemaal goed (voor zover ik het nu kan bekijken), leek me wel nuttig om de uiteindelijke oplossing hier ff te posten voor mensen die op zoek zijn :) Mochten er nog betere manieren zijn om dit op te lossen dan hoor ik dat natuurlijk ook graag!

Verwijderd

Kill -9 is een beetje lomp, je kunt ook een kill -SIGINT gebruiken (volgens mij is dat -15), dat doet hetzelfde als ctrl+c

  • krietjur
  • Registratie: Februari 2001
  • Nu online

krietjur

Where am I?

Topicstarter
Bedankt voor de tip! Zal er morgen es naar kijken en het veranderen :)
Pagina: 1