Prüfen ob Verzeichnis auf Server existiert

P

PhoenixDH

NOOB
Wie kann ich prüfen, ob ein Verzeichnis auf einem Server existiert, habs so gemacht:
Code:
if [ -d fire:/verzeichnis/ ]
then
...
fi

Das geht aber leider nicht, wieso ?
 
Was meinst du mit Sever? Meinst du damit einen anderen Rechner???

Wenn ja dann brauchst höchstwahrscheinlich schon einen SSH-Zugang um das zu verskripten...


a la ssh user@host "test -d <dir> && echo Verzeichnis vorhanden."
 
MrFenix schrieb:
Oder Verzeichnisstruktur vom Server mounten.
Äääääh? Nein bitte nicht ;o).

Wenn ich Wein aus Italien importiere, rufe ich zuerst an und informiere mich und fahre nicht runter um zu schauen, ob die den Wein auf Lager haben.
 
Schlaubi_fi.de schrieb:
Was meinst du mit Sever? Meinst du damit einen anderen Rechner???

Wenn ja dann brauchst höchstwahrscheinlich schon einen SSH-Zugang um das zu verskripten...


a la ssh user@host "test -d <dir> && echo Verzeichnis vorhanden."

Ja, einen anderen Rechner meine ich, wie müsste die Syntax in meinem Fall genau aussehen, komm damit nicht klar !

Dank dir !

Habs so versucht:
Code:
if [ ssh root@${WEBSERVER} "test -d /opt/lampp/htdocs/docs/docs_$2/$4/" ]
then
scp -r ${WEBSERVER}:/opt/lampp/htdocs/docs/docs_$2/$4/ ${WEBSERVER}:/opt/lampp/htdocs/docs/backup/docs_$2/
fi

Da kommt aber folgende Fehlermeldung:
Code:
cfg2html_catch_all.sh[106]: [: root@fire: unexpected operator/operand
 
Zuletzt bearbeitet:
Du hat fuehr bash die falschen Klammern benutzt. Es sollte lauten:
Code:
if ( ssh root@${WEBSERVER} "test -d /opt/lampp/htdocs/docs/docs_$2/$4/" );
then # rest vom Skript

Allerdings musst Du dann das Passwort eingeben, was fuer Skripte meist nicht wuenschenswert ist. Die andere Moeglichkeit ist, einen ssh-Schluessel zu generieren und auf ${WEBSERVER} abzulegen (mit ssh-keygen):
Code:
   ssh-keygen -t rsa
und bei Passwort nur 'enter' eingeben.
Das erzeugt (per default) die Datei ~/.ssh/id_rsa.pub
Die musst Du dann in die Datei /root/.ssh/authorized_keys auf dem ${WEBSERVER} kopieren, z.B. durch
Code:
   cat id_rsa.pub >> /root/.ssh/authorized_keys
nachdem Du die Datei id_rsa.pub zum ${WEBSERVER} kopiert hast.
 
Die beiden Rechner sind gegenseitig authorisiert, sprich Zugang ohne ssh-PW ist erlaubt !
Daran kann es nicht hängen !
 
Der eigentlich Fehler liegt auch darin, dass in Du in Deiner if-Bedingung eckige Klammern benutzt "if [ foo ]", es aber runde oder geschweifte sein muessen "if { foo }" bzw. "if ( foo )".
 
Wieso das, ich benutze sonst auch immer eckige und es klappt, wenn dann müsste da ein Unterschied sein !
Ebenso wird das Script weiter abgearbeitet, er macht nur die Bedingung nicht !
 
"man test" und "man bash" sollte Dir helfen.

Gruss, Phorus
 
PhoenixDH schrieb:
Wieso das, ich benutze sonst auch immer eckige und es klappt, wenn dann müsste da ein Unterschied sein !
Ebenso wird das Script weiter abgearbeitet, er macht nur die Bedingung nicht !

In eckige Klammern kannst Du boolsche Ausdruecke fuegen ("if [ -d /tmp]; ..."), wenn Du aber den Erfolg eines Befehls testen moechtest, musst Du diesen in runden oder geschweiften Klammern abgeben. Probier's mal aus.

(info bash ist etwas komfortabler als man bash)
 

Ähnliche Themen

NAS-Drive Mount in Bash-Script über crontab

Verschlüsseltes Backup-Script mit rsync

[gelöst] - for file in ... nur für bestimmte Endungen?

HandbrakeCLI Shell Skript

Crontab und Scripts - Problem

Zurück
Oben