The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
csh niet om te bellen naar een 2 embedded csh script pollsizer Programmeren en Shell Scripting 1 06-07-2008 01:22 PM
Shell script - Als --- fi voorwaarde yog_chavan Programmeren en Shell Scripting 4 05-07-2008 09:46
hulp nodig met beproevingsomstandigheden in shell script pieman8080 Programmeren en Shell Scripting 9 09-11-2006 05:20 PM
UNIX-script niet .... khan1978 UNIX for Advanced & Expert Gebruikers 1 12-05-2005 01:28 PM
OR'ing voorwaarde in script vino Programmeren en Shell Scripting 9 04-21-2005 08:34

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-19-2007
rubionis rubionis is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posts: 18
IF conditie niet in een SSH-script

Hoi,

Ik ben ssh-in naar een externe machine (ubuntu) en probeert uit te voeren in een klein script there.The script ziet er als volgt uit:

Code:
ssh user@ubuntu <<EOF
cd ~/test
ls -l
echo "Continue counting files starting with a`s ?"
read answer
if [ "$answer" = y ]
then 
ls -l a*
else
exit
fi
EOF
Nu alles werkt prima tot aan de IF-test. Het script lijkt te ontsnappen aan het lezen commando, (niet gevraagd), en al de rest van de IF wordt genegeerd. Het blijkt een fout in de buurt van de "dan" gedeelte. Ik heb geprobeerd de bouw van een lokaal script in de remote machine en eraan herinnerend dat van de SSH-script, maar dat lijkt te mislukken ook. Ingebouwde een eenvoudig script met de zaak staat, maar dat lijkt te hebben een fout - "onverwacht einde van bestand", ook al lijkt alles correct is, (aangevinkt zelfs met od-c voor eventuele verborgen karakter)
Met andere woorden elke eenvoudig script dat ik gebouwd met een test voorwaarde in een SSH-script
lijkt te mislukken.

Iemand ideeën?

En in het algemeen, is er een regel die ik moet u er rekening mee houden bij het uitvoeren van een test conditie in een externe machine via een SSH-script?

Laatst gewijzigd door rubionis; op 04.15.2008 05:42 PM.. Reden: code tags toegevoegd
  #2 (permalink)  
Old 11-19-2007
portier porter is offline Forum Advisor  
Geregistreerde gebruiker
  
 

Join Date: Jan 2007
Berichten: 2965
Citaat:
Oorspronkelijk geplaatst door rubionis View Post
echo "Doorgaan tellen bestanden die beginnen met een` s? "
Hoe over het verwijderen van de achterkant citaat?

Heeft u "#! / Bin / sh" aan het begin van het script?
  #3 (permalink)  
Old 11-19-2007
rubionis rubionis is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posts: 18
Ja, ik vergat te zeggen heb ik #! / Bin / bash aan het hoofd van het script.

En ik eigenlijk niet terug vinkje in het script, (Ja ik ben me bewust van de speciale tekens conflicten in een script), heb ik net een `s als voorbeeld. Zeg ik dat alle speciale tekens in de SSH-script, heeft het script kijken OK?

Dus mijn vraag is, indien er sprake is van een bekend conflict, wanneer er gebruik beproevingsomstandigheden in een SSH-script. Waar ik ben niet op de hoogte van, of het in andere woorden: wat is een algemeen model van de test staat in een SSH-script. Of ben ik ontbreekt iets in mijn script?

Bedankt voor uw snelle antwoord.
  #4 (permalink)  
Old 11-19-2007
gus2000 gus2000 is offline
Geregistreerde gebruiker
  
 

Join Datum: oktober 2007
Posts: 157
Inderdaad, je hebt een open-end single-quote die moet worden gesloten.

Maar ... je hebt grotere problemen dan dat, want dit is een * afstandsbediening * script. Dus uitspraken zoals deze:

Code:
ssh HOST <<EOF
    echo $HOSTNAME
EOF
toont de lokaal waarde van HOSTNAME, omdat het script wordt geëvalueerd door de shell voordat het wordt verzonden naar de remote host. Dus, alle variabelen die je niet wilt geëvalueerd moeten worden uitgesloten (dat wil zeggen, "\ $ HOSTNAME"). Als u niet hoeft te referentie ELKE lokale variabelen, kunt u voorkomen dat het script wordt geëvalueerd worden ontkomen aan de "EOF" scheidingsteken:

Code:
ssh HOST <<\EOF
    # the backslash above will prevent the Variables below from being evaluated
    echo $HOSTNAME
EOF
Algemeen, bij een poging tot code / debug dit soort scripts, moet u sturen naar een lokaal bestand om de code evalueert de manier die u verwacht, en dan kunt u "sh-n" om te controleren of de syntaxis:

Code:
cat <<EOF > /tmp/test.script
    # this is a temporary location
    echo $VALUE1 \$VALUE1
EOF
  #5 (permalink)  
Old 11-19-2007
rubionis rubionis is offline
Geregistreerde gebruiker
  
 

Join Date: Aug 2007
Posts: 18
Dankzij gus2000,

De separator \ EOF heeft de truc met betrekking tot alle variabelen in de SSH-script. Een andere nuttige info in gedachten te houden!
(Ik weet het, ik moet voorzichtig zijn met de variabelen, BTW Ik gebruik een langere awk commando in het script en ik ontsnapte alle met $ \ $.)

Maar helaas de IF-test niet opnieuw:

Citaat:
syntaxisfout buurt onverwachte token "vervolgens"
ook al "alles ziet er OK".

Dus mijn VOORNAAMSTE vraag blijft de IF-test. In andere hoe zou ik schrijf een IF-test (of een TEST cmd in het algemeen) in SSH-script zonder storingen?

Laatst gewijzigd door rubionis; op 04.15.2008 05:58 PM.. Reden: code tags
  #6 (permalink)  
Old 11-19-2007
Lakris Lakris is offline
Geregistreerde gebruiker
  
 

Join Datum: oktober 2007
Posts: 242
Heeft U nog vragen naar een antwoord op uw lees verklaring? Ik denk dat daar SSH is niet-interactieve (geen controlerende terminal) U kunt niet een terminal zoals sessie, ofwel U moet werken met iets verwachten of bewaren het script lokaal en alleen "verzamelen" ongeacht info Je moet uit de externe gastland en verwerken van het lokaal.

Maak een lokale script en lopen het lokaal:

Citaat:
#! / bin / bash
ssh user @ ubuntu ls-l \ ~ / test
echo "Doorgaan tellen bestanden die beginnen met een?"
lees antwoord
if [ "$ antwoord" \u003d y]
dan
ssh user @ ubuntu ls-l 'a *'
anders
afrit
fi
U moet alle argumenten worden uitgelegd door Uw lokale schaal die backslash of enkele aanhalingstekens.
/ Lakris
  #7 (permalink)  
Old 11-20-2007
edcrosbys edcrosbys is offline
Read Only
  
 

Join Date: juli 2007
Posts: 15
Citaat:
Oorspronkelijk geplaatst door Lakris View Post
Ik denk dat daar SSH is niet-interactieve (geen controlerende terminal) U kunt niet een terminal zoals sessie, ofwel U moet werken met iets verwachten of bewaren het script lokaal en alleen "verzamelen" ongeacht info
X100!

Ik heb deze beet me voor sommige programma's die willen een terminal voor het verzenden van gegevens te ... Root krijgt email garbage dan.

Citaat:
En in het algemeen, is er een regel die ik moet u er rekening mee houden bij het uitvoeren van een test conditie in een externe machine via een SSH-script?
Handelen als er sprake is nergens voor te lezen info uit behalve lokale systeem variabelen, bestanden en programma-output. Ik zou meestal gebruik van een script zoals deze op de fiets tussen de vele vakken Als ik wil interactie met het script, ik heb mijn vak doen de controle, terwijl de afstandsbediening doet het verzamelen van gegevens.

Zoals:

ssh user @ ubuntu "ls-l / test"
echo "Doorgaan tellen bestanden die beginnen met een` s? "
lees antwoord
if [ "$ antwoord" \u003d y]
dan
ssh user @ ubuntu "ls-la *"
fi

Het is niet zo efficiënt met multple teken-ons, maar de logica is lokaal. De enige uitzondering is als er grote hoeveelheden gegevens te filteren (met een grep ofzo) - ik probeer het en leuk op het netwerk.
Closed Thread

Bladwijzers

Labels
grep of, linux, ubuntu

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 10:18 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0