FTP/FXP Distribution

Mitglieder finden Rat bei Mitgliedern bei technischen Fragen außerhalb von Grillen und BBQ.

Moderator: Mod-Team

Benutzeravatar
Redneck
myBBQ #1
myBBQ #1
Beiträge: 10803
Registriert: 11.06.2006, 15:21

Habe jetzt den Keygen nochmal laufen lassen und jetzt stehen beide Teile im /.ssh . Ich versuche den public part jetzt hochzukopieren.
Keiner
Schneggebegger
Beiträge: 9354
Registriert: 09.07.2006, 20:15
Wohnort: Marburg

und die public heisst wirklich mykey.pub?

Mach mal ein "cat mykey.pub", das was da drin steht kopieren
Auf den Server per SSH einloggen und z.B. mit nano .ssh/authorized_keys die Datei oeffnen/anlegen und das von eben reinkopieren.
Teammitglied bei "TB & The BBQ-Scouts"
Benutzeravatar
Redneck
myBBQ #1
myBBQ #1
Beiträge: 10803
Registriert: 11.06.2006, 15:21

O.K., hat funktioniert. Login klappt ohne PW.

Beim ersten Keygen wurde ich aufgefordert dem Key einen Namen zu geben (was ich getan habe). Beim zweiten Mal habe ich nichts eingetragen, sodass der Standardtitel (id_rsa) vergeben wurde.
Keiner
Schneggebegger
Beiträge: 9354
Registriert: 09.07.2006, 20:15
Wohnort: Marburg

Klappt jetzt auch der Rest? :)
Teammitglied bei "TB & The BBQ-Scouts"
Benutzeravatar
Redneck
myBBQ #1
myBBQ #1
Beiträge: 10803
Registriert: 11.06.2006, 15:21

Ich mache Schluss fuer heute, bin seit 3 Uhr auf den Beinen bzw. am Computer.
Der Rest muss warten bis morgen. Geklappt hat's ja eigentlich schon, muss nur noch genau schauen, wie ich das in einem Script unterbringe. Ich melde mich dazu nochmal. Schoenen Dank schon mal.
Benutzeravatar
Redneck
myBBQ #1
myBBQ #1
Beiträge: 10803
Registriert: 11.06.2006, 15:21

Ich habe mal ein kleines Script geschrieben, allerding laeuft es noch nicht, wie ich moechte. Vielleicht kannst du, wenn du mal 'ne Minute hast, mal drueber schauen.

Code: Alles auswählen

#!/bin/sh
HOST='ftp.agentur1.com'
USER='ftp_username'
PASSWD='ftp_password'

ssh ssh-user@mydomain.com
cd FXP
ftp -n $HOST
quote USER $USER
quote PASS $PASSWD
mput *.jpg
quit
END_SCRIPT
exit 0
FXP waere hier das Verzeichnis auf meinem Webspace wo die zu uebertragenden jpg Files liegen.

Was passiert bei dem o.g. Script?

Ich habe es mit 'chmod 755 scriptname' ausfuehrbar gemacht und rufe es im Terminal (Apple Shell) auf.
Es wird ausgefuehrt, stoppt aber nach dem erfolgreichen SSH Login und fuehrt den danach befohlenen Verzeichniswechsel (nach FXP) nicht aus.

Das ist der Stand.

Wenn ich nun per 'exit' die SSH Verbindung abbreche, fuehrt er das Script weiter aus und durchlaeuft erfolgreich das FTP Login bei Agentur1. Und da stecken wir wieder fest. Das Nichtausfuehren der mput Anweisung ist nun logisch, das ja die SSH Verbindung durch 'exit' abgebrochen wurde.

Das eigentliche Problem ist, dass er das Script nicht nach dem SSH Login weiter abarbeitet. ich vermute entweder einen Syntax Fehler oder einen generellen Denkfehler, dass Shell Scripte nicht wie Batch Dateien runtergerattert werden. Da fehlen mir die Grundlagen, weil ich noch nie ernsthaft mit SSH und Shell gearbeitet habe.

Ideen?


Edit: "Zu Fuß", also außerhalb des Scripts kann ich alle notwendigen Schritte (Login, Verz-wechsel, FTP Anmeldung, Kopieren) problemlos ausfuehren.
Keiner
Schneggebegger
Beiträge: 9354
Registriert: 09.07.2006, 20:15
Wohnort: Marburg

Das ist recht einfach :)

Mit ssh ssh-user@mydomain.com kommst Du zwar auf Deinen Webspace, aber sonst nichts.
Du kannst dem Befehlt einen weiteren Befehl mitgeben, also z.B. "ftp -n agentur1.com < Agentur1Datei", danach beendet sich die Verbindung wieder.
Du gibst aber nichts weiter mit, sondern startest danach alle anderen Befehle lokal ;)

Wenn Du Dein Script auf Deinen Webserver schmeisst und lokal per ssh ssh-user@mydomain.com meinscript ausfuehren laesst, passt es wieder.

Siehe mein Beispiel auf der vorigen Seiten.


Also lokal:

Code: Alles auswählen

#!/bin/sh
ssh ssh-user@mydomain.com script1
ssh ssh-user@mydomain.com script2
ssh ssh-user@mydomain.com script3

Auf dem Server script1

Code: Alles auswählen

#!/bin/sh
HOST='ftp.agentur1.com'
USER='ftp_username'
PASSWD='ftp_password'

cd FXP
ftp -n $HOST
quote USER $USER
quote PASS $PASSWD
mput *.jpg
quit
END_SCRIPT
exit 0
Teammitglied bei "TB & The BBQ-Scouts"
Benutzeravatar
Redneck
myBBQ #1
myBBQ #1
Beiträge: 10803
Registriert: 11.06.2006, 15:21

Macht Sinn. Haette man durch etwas Nachdenken auch selbst drauf kommen koennen, dass ein lokales Script nicht nach Login auf einer hoeheren Ebene weiter ausgefuehrt werden kann, sondern erst nach Rueckkehr auf die lokale Ebene fortgesetzt wird. Ich lege die Scripts morgen mal an und mache dann mal einen Testlauf. Herzlichen Dank, hast mir sehr geholfen.
Benutzeravatar
Redneck
myBBQ #1
myBBQ #1
Beiträge: 10803
Registriert: 11.06.2006, 15:21

Die Sache ist hartnaeckiger als ich gedacht/gehofft hatte.

Ich habe die Scripts mal wie oben von dir beschrieben angelegt. Zum Test erstmal nur mit einer Agentur.

Das lokale Script ...

Code: Alles auswählen

#!/bin/sh
ssh ssh-user@mydomain.com ./script1.sh
... stellt die Verbindung her und loggt sich ein, kann aber das script1 nicht finden bzw. aufrufen.

Code: Alles auswählen

/bin/bash: ./script1.sh: No such file or directory
Ich habe das mit und ohne "./" versucht, das Ergebnis blieb gleich (auch mit oder ohne Dateiendung .sh.
Keiner
Schneggebegger
Beiträge: 9354
Registriert: 09.07.2006, 20:15
Wohnort: Marburg

Hast Du dran gedacht, das Script auf dem Server ausfuehrbar zu machen?

Wenn das passt, log Dich per Hand ein, geb in das Verzeichnis mit dem Script und gib "pwd" ein.
Den Pfad dann in Deinem lokalen Script uebernehmen.

Btw, nicht vergessen auch im Script auf dem Server auf die Pfade zu achten :)
Teammitglied bei "TB & The BBQ-Scouts"
Benutzeravatar
Redneck
myBBQ #1
myBBQ #1
Beiträge: 10803
Registriert: 11.06.2006, 15:21

Keiner hat geschrieben:Hast Du dran gedacht, das Script auf dem Server ausfuehrbar zu machen?

Wenn das passt, log Dich per Hand ein, geb in das Verzeichnis mit dem Script und gib "pwd" ein.
Den Pfad dann in Deinem lokalen Script uebernehmen.

Btw, nicht vergessen auch im Script auf dem Server auf die Pfade zu achten :)
Mein Guete ist das unnoetig kompliziert. Ich habe jetzt also per pwd den absoluten Pfad ermittelt /www/htdocs/webaccount/ und rufe das agentur1 Script innerhalb des lokalen Scripts auf. Das scheint zu klappen, allerdings nur soweit bis er das Login auf dem FTP abgearbeitet hat. Nun steht er im FTP (ftp>) und stoppt dann. Die danach folgende Anweisung mput *.jpg wird im Script nicht ausgefuehrt. Wenn ich nun jedoch manuell mput *.jpg eintippe, fuehrt er die Anweisung aus.

Außerdem scheint er auf FTP Ebene die Anweisung Change Directory "cd RM\ EXCL" nicht zu kennen (fuer die eine Agentur bei der ich noch in ein Unterverzeichins wechseln muss. Da gibt er mir ein "Unknown command" als Rueckmeldung innerhalb des Scripts. Wobei der Verzeichniswechsel wiederum klappt, wenn ich die Anweisung von Hand eingebe.
Mir fehlt allerdings auch etwas die Systematik weil ich mittlerweile mit vielen verschiedenen Variationen der Scripts rumprobiere und man kaum echtes Feedback bei der Abarbeitung bekommt. Gibt es nicht irgendein Attribut, das man der Scriptausfuehrung hinzufuegen kann sodass man entweder jeden abgearbeiteten Schritt auf dem Bildschirm sieht oder dass das System nach jedem Schritt eine Pause einlegt bis ich irgendeine Taste druecke? Einfach damit man nachverfolgen kann, was erfolgreich abgearbeitet wurde.
Keiner
Schneggebegger
Beiträge: 9354
Registriert: 09.07.2006, 20:15
Wohnort: Marburg

Das Script solltest Du, wenn Du es benutzen willst, auch komplett uebernehmen und nichts streichen :)
<<END_SCRIPT ist essentiell.

Also:

Code: Alles auswählen

#!/bin/sh
HOST='ftp.agentur1.com'
USER='ftp_username'
PASSWD='ftp_password'

ssh ssh-user@mydomain.com
cd FXP
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
mput *.jpg
quit
END_SCRIPT
exit 0
Je nachdem, wie ftp bei Dir eingestellt ist, wird er Dich so aber bei jeder Datei fragen.
Wenn er das mach, nimm folgendes:

Code: Alles auswählen

#!/bin/sh
HOST='ftp.agentur1.com'
USER='ftp_username'
PASSWD='ftp_password'

ssh ssh-user@mydomain.com
cd FXP
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
prompt on
mput *.jpg
quit
END_SCRIPT
exit 0

edit: Verzeichniswechsel nach RM\ EXCL habe ich auch getestet, kein Problem
Teammitglied bei "TB & The BBQ-Scouts"
Benutzeravatar
Redneck
myBBQ #1
myBBQ #1
Beiträge: 10803
Registriert: 11.06.2006, 15:21

Keiner hat geschrieben:Das Script solltest Du, wenn Du es benutzen willst, auch komplett uebernehmen und nichts streichen :)
<<END_SCRIPT ist essentiell.

Also:

Code: Alles auswählen

#!/bin/sh
HOST='ftp.agentur1.com'
USER='ftp_username'
PASSWD='ftp_password'

ssh ssh-user@mydomain.com
cd FXP
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
mput *.jpg
quit
END_SCRIPT
exit 0
Je nachdem, wie ftp bei Dir eingestellt ist, wird er Dich so aber bei jeder Datei fragen.
Wenn er das mach, nimm folgendes:

Code: Alles auswählen

#!/bin/sh
HOST='ftp.agentur1.com'
USER='ftp_username'
PASSWD='ftp_password'

ssh ssh-user@mydomain.com
cd FXP
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
prompt on
mput *.jpg
quit
END_SCRIPT
exit 0

edit: Verzeichniswechsel nach RM\ EXCL habe ich auch getestet, kein Problem
Aber waren wir nicht schon so weit, dass das lokale Script erst das Script auf dem Server aufruft? Nun steht doch wieder alles nur in dem einen Script (ssh anmeldung , verzeichniswechsel, ftp etc) ...

Und ja, er fragt auf die mput *.jpg Anweisung tatsaechlich ob ich's auch ernst damit meine. Mit fehlt bei diesem Unix Interpreter total die Logik. Das erscheint als ob es von einem Kind geschrieben wurde.

Wie wenn ich zu meinem Sproessling sage "Raeum jetzt dein Zimmer auf!" und er erwidert "Wie jetzt, das ganze?" oder "Meinst du das ernst?" Was ist denn an der mput *.jpg Anweisung so schwer zu verstehen, dass er fuer jedes einzelne .jpg File nachfragen muss, ob ich das auch kopiert haben will?

Auch die generelle Anwendung von get und put (bzw mget und mput) ist logisch verkehrt, IMO. Wenn ich auf das FTP Verzeichnis auf dem fremden Server wechsele und dort kein File liegt (ich aber die Files dort hin ziehen will), wieso muss ich dann "put" (mput) nutzen und nicht get?
Wie gesagt, fuer mich ist vieles unverstaendlich und unlogisch. Mich frustrieren Probleme, die nicht schnell und einfach geloest werden koennen und mit denen ich mich immer wieder beschaeftigen muss. Und dabei kann es doch nicht so schwer sein, ein kleines Script von zehn oder zwoelf Zeilen zu schreiben und ausfuehren zu lassen.
Wollt ich nur mal loswerden. Geht um Gottes Willen nicht gegen deine Hilfe. Bin dir sehr dankbar dafuer.

Also, ich versuche dieses letzte Script nun noch einmal (bezweifele aber, dass es nach der SSH-Anmeldung weiterlaeuft). Wenn's nicht klappt, schmeiße ich die Sache hin. Trotzdem nochmal herzlichen Dank.
Keiner
Schneggebegger
Beiträge: 9354
Registriert: 09.07.2006, 20:15
Wohnort: Marburg

Arg halt

Moment, hier ist jetzt einiges durcheinander ...

Ok, bin beim zitieren wohl im falschen Post gelandet.

Streich einfach die Zeile mit dem ssh :)
Teammitglied bei "TB & The BBQ-Scouts"
Keiner
Schneggebegger
Beiträge: 9354
Registriert: 09.07.2006, 20:15
Wohnort: Marburg

Redneck hat geschrieben: Wie wenn ich zu meinem Sproessling sage "Raeum jetzt dein Zimmer auf!" und er erwidert "Wie jetzt, das ganze?" oder "Meinst du das ernst?" Was ist denn an der mput *.jpg Anweisung so schwer zu verstehen, dass er fuer jedes einzelne .jpg File nachfragen muss, ob ich das auch kopiert haben will?
Sowas ist Anwendern geschuldet, die sich nicht mit ihrer Technik auseinander setzen wollen :mrgreen:

Auch die generelle Anwendung von get und put (bzw mget und mput) ist logisch verkehrt, IMO. Wenn ich auf das FTP Verzeichnis auf dem fremden Server wechsele und dort kein File liegt (ich aber die Files dort hin ziehen will), wieso muss ich dann "put" (mput) nutzen und nicht get?
Da ist ein kleines Verstaendnissproblem.
Nur mit SSH (oder auch telnet, term etc pp) wechselst Du auf einen anderen Rechner.
Mit FTP (oder SMTP, also Email, HTTP etc pp) oeffnest Du nur eine Verbindung, wechselst aber nicht auf den anderen Rechner.
Du bist weiterhin lokal auf Deinem Rechner und gibst Deinem lokalen Programm Befehle, was es zu machen hat.
Bei "put" sagst Du Deinem Rechner, dass er die lokale Datei ueber das FTP Protokoll auf den anderen Rechner legen soll, bei "get" dass es eine Datei des entfernten Rechners auf Deinen Rechner holen soll.
Und dabei kann es doch nicht so schwer sein, ein kleines Script von zehn oder zwoelf Zeilen zu schreiben und ausfuehren zu lassen.
Ist es auch nicht, wenn derjenige weiss, was er macht und nicht einfach wichtige Stellen streicht ;)
30 Minuten waere fuer sowas realistisch :)
Teammitglied bei "TB & The BBQ-Scouts"
Antworten