Kolla om fil finns på remote dator

Tråden skapades och har fått 2 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2005-11-10 14:13

Jag har ett shell-script som behöver kontrollera om en fil finns på en remote host. Koden nedan fungerar bara delvis. Den connectar remote host, men sedan blir det error.

if [ -e - | ssh 172.0.0.5 - .mapp/fil ]
then
echo 'Ja'
fi

Kan någon detta?

  • Medlem
  • Stockholm
  • 2005-11-10 14:45
if ssh 172.0.0.5 [ -e .mapp/fil ] ;
 then echo 'ja';
fi

Semikolonen ska sitte FÖRE then och FÖRE fi. (Ja det är skumt, men gör man bash och se själv!)

Det som står efter ssh 127.0.0.5 är kommandot som ska köras på remote-maskinen.

[ -e .mapp/fil ] är ett shellkommando som (är kryptiskt och) inte ger någon output. Däremot sätter den en exitstatus. För mer info, gör man test.

Exit-statusen från ssh-kommandot är exitstatusen från remotekommandot eller 255 om ssh gick fel (du kanske vill ta hand om det fallet).

if-kommandot kör valfritt kommando och gör then-grenen om exitstatusen från detta kommando != 0.

  • Medlem
  • International user
  • 2005-11-10 15:41

Tack för hjälpen, nu fungerar scriptet som det ska. Så här skrev jag (semikolon behövs inte när man skriver if-satsen på flera rader):

if  ssh 172.0.0.5 [ -e ./mapp/fil ]
then 
echo 'ja'
else
echo 'nej'
fi

Även detta går att använda (som du antydde):

ssh 172.0.0.5 test -e ./mapp/fil
# För att sedan kolla mot $?
1
Bevaka tråden