sh / cygwin probleempje

Pagina: 1
Acties:

  • Saven
  • Registratie: December 2006
  • Laatst online: 27-01 19:41

Saven

Administrator

Topicstarter
Hallo,
ik moet even snel iets testen voor mijn server waar ik geen ssh toegang tot heb, dus gebruik ik cygwin voor op mijn eigen pc.

Alleen tijdens het uitvoeren geeft hij een fout:
Afbeeldingslocatie: http://www.imgdumper.nl/uploads/4998963b1820a/4998963b16e84-errrr.jpg

Ik heb uren zitten kijken naar dit stukje code:
Bash:
1
2
3
4
 e=0; l=0; echo "$HTTP_BACK" | while read i; do let l++;
   if [ $l = 1 ] && [ "$i" != "$HTTPOKMSG$RETURNCHR" ] \
&& [ "$i" != "$HTTP1KMSG$RETURNCHR" ]; then
      echo "Bad Server Response :\\"; exit 4; fi;


Het gaat dus om de 2 middelste regels, maar ik kom er echt niet uit. Kan iemand mij verlossen uit deze rare error? :P Thnx

edit: voor de duidelijkheid, ik gebruik dus Cygwin, voor Windows dus :P

[ Voor 5% gewijzigd door Saven op 15-02-2009 23:30 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Saven
  • Registratie: December 2006
  • Laatst online: 27-01 19:41

Saven

Administrator

Topicstarter
Sorry het is Windows ;)

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Wat heb je al geprobeerd? Wat is de bron van het script, wat moet het precies doen? Welke shell gebruikt het? Wat gebeurt er als het op 1 regel staat? Ligt het aan mij of staat er nergens done?

  • Saven
  • Registratie: December 2006
  • Laatst online: 27-01 19:41

Saven

Administrator

Topicstarter
Ik heb dit script van internet om de veiligheid van mijn server te testen. 'Done' ben ik nergens tegen gekomen, maar ik heb dan ook de ballen verstand van shell scripting.

Heb even zitten zoeken waarom done nodig zou zijn, maar het script gebruikt geen loops :P

  • jelly
  • Registratie: Mei 2006
  • Laatst online: 28-11-2025

jelly

Arch Linux

Saven schreef op maandag 16 februari 2009 @ 13:52:
Ik heb dit script van internet om de veiligheid van mijn server te testen. 'Done' ben ik nergens tegen gekomen, maar ik heb dan ook de ballen verstand van shell scripting.

Heb even zitten zoeken waarom done nodig zou zijn, maar het script gebruikt geen loops :P
Als je de veiligheid wil testen van een server met een script ben je volgens mij niet helemaal handig bezig, er zijn gewoon programma zoals nessus waarmee je server porten etc kan scannen. Lijkt mij wat veiliger dat zomar een script van iemand kopieren, het script kan net zogoed wget $virus bevatten ;)

Keep it simple stupid


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 15:48

MBV

Saven schreef op maandag 16 februari 2009 @ 13:52:
Ik heb dit script van internet om de veiligheid van mijn server te testen. 'Done' ben ik nergens tegen gekomen, maar ik heb dan ook de ballen verstand van shell scripting.

Heb even zitten zoeken waarom done nodig zou zijn, maar het script gebruikt geen loops :P
Dan zou ik dit script maar nooit gebruiken, want kennelijk heb je geen idee wat het script doet.

Wat denk je dat hier gebeurt:
while read i; do let l++;

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 17:26

Kees

Serveradmin / BOFH / DoC
MBV schreef op maandag 16 februari 2009 @ 14:59:
[...]

Dan zou ik dit script maar nooit gebruiken, want kennelijk heb je geen idee wat het script doet.

Wat denk je dat hier gebeurt:
while read i; do let l++;
hij leest een response (schijnbaar van een http verbinding) en voor elke regel die hij krijgt verhoogt hij die variable 'l' met 1 - wat denk jij dat er gebeurd?

Wat je zou kunnen doen met de code is het opschonen en voorzien van wat identatie; alla:
ee=0
l=0
echo "$HTTP_BACK" | while read i 
do 
	let l++;
	if [ $l = 1 ] && [ "$i" != "$HTTPOKMSG$RETURNCHR" ] && [ "$i" != "$HTTP1KMSG$RETURNCHR" ]
	then
		echo "Bad Server Response :\\"
		exit 4
	fi
[rest van het script]

[ Voor 29% gewijzigd door Kees op 16-02-2009 15:34 ]

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 19:27

leuk_he

1. Controleer de kabel!

Saven schreef op zondag 15 februari 2009 @ 23:23:
Bash:
1
2
3
4
 e=0; l=0; echo "$HTTP_BACK" | while read i; do let l++;
   if [ $l = 1 ] && [ "$i" != "$HTTPOKMSG$RETURNCHR" ] \
&& [ "$i" != "$HTTP1KMSG$RETURNCHR" ]; then
      echo "Bad Server Response :\\"; exit 4; fi;
ik zou het zo schrijven... wellicht ook verschil tussen ksh/bash/zsh enzo...

code:
1
2
3
4
   if  [  $l = 1 -a  "$i" != "$HTTPOKMSG$RETURNCHR" -a "$i" != "$HTTP1KMSG$RETURNCHR" ]
 then
      echo "Bad Server Response :\\"; exit 4; 
 fi;


Na de eerste "]" moet een then. ( man test is manual pagina voor [ ] )

[ Voor 7% gewijzigd door leuk_he op 16-02-2009 15:43 . Reden: newlines toegevoegd ]

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 17:26

Kees

Serveradmin / BOFH / DoC
leuk_he schreef op maandag 16 februari 2009 @ 15:31:
[...]


ik zou het zo schrijven... wellicht ook verschil tussen ksh/bash/zsh enzo...

code:
1
2
   if  [  $l = 1 -a  "$i" != "$HTTPOKMSG$RETURNCHR" -a "$i" != "$HTTP1KMSG$RETURNCHR" ] then
      echo "Bad Server Response :\\"; exit 4; fi;


Na de eerste "]" moet een then. ( man test is manual pagina voor [ ] )
bij bash iig moet de 'then' op de volgende regel staan, of na een ';' komen

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 19:27

leuk_he

1. Controleer de kabel!

Kees schreef op maandag 16 februari 2009 @ 15:33:
[...]

bij bash iig moet de 'then' op de volgende regel staan, of na een ';' komen
Mijn leermoment van vandaag.. Ik heb het hierboven niet gedaan, maar zet het inderdaad altijd op de volgende regel. :o

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • MBV
  • Registratie: Februari 2002
  • Laatst online: 15:48

MBV

Kees schreef op maandag 16 februari 2009 @ 15:26:
[...]

hij leest een response (schijnbaar van een http verbinding) en voor elke regel die hij krijgt verhoogt hij die variable 'l' met 1 - wat denk jij dat er gebeurd?
Ik had geen zin om me erin te verdiepen, maar het viel me nogal op dat de TS stellig beweert dat er geen loops worden gebruikt, en dat er vervolgens wel een while-loop staat. Daarom zei ik dat hij het script maar beter niet kon gebruiken, als je niet snapt wat een willekeurig script van het internet doet kan je het IMHO maar beter niet vertrouwen.

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 07-01 22:10
Wat een onleesbare lay-out. Vervangen van ';' door newlines en toevoegen van indentatie geeft:
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
e=0
l=0
echo "$HTTP_BACK" |
while read i
do
    let l++
    if [ $l = 1 ] && [ "$i" != "$HTTPOKMSG$RETURNCHR" ] \
        && [ "$i" != "$HTTP1KMSG$RETURNCHR" ]
    then
        echo "Bad Server Response :\\"
        exit 4
    fi

Er ontbreekt een afsluitende 'done' bij de 'while do', maar dat komt denk ik omdat het een fragment is.
Verder is de syntax op het oog correct.
Conclusie: er is iets onzichtbaars gebeurd.
Ik denk dat het script DOS regeleinden heeft gekregen of dat er een spatie achter de backslash van de 'if'-regel terecht is gekomen.
Oplossing: converteer naar unix regeleinden (enkel LF, geen CRLF)
of: join de 'if' regel en de '&&' regel tot 1 regel en verwijder de backslash:
Bash:
1
2
    if [ $l = 1 ] && [ "$i" != "$HTTPOKMSG$RETURNCHR" ]  && [ "$i" != "$HTTP1KMSG$RETURNCHR" ]
    then

  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 22-01 20:37

zomertje

Barisax knorretje

Van dat soort zaken heb ik zowel op Unix als op Windows last gehad: onzichtbare tekens die je code niet laten werken. Kan dus een goeie optie zijn.

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun

Pagina: 1