Ausgabeumlenkung mit scp funktioniert nicht [GELÖST]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
chu-i
Beiträge: 157
Registriert: 10.11.2005 23:29:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

Ausgabeumlenkung mit scp funktioniert nicht [GELÖST]

Beitrag von chu-i » 18.05.2006 17:43:09

Ist mir ja peinlich das zu fragen :oops: aber ich bekomme keine Ausgabeumlenkung mit scp hin.

BSP

Code: Alles auswählen

scp ...optionen... &>> /pfad/datei
Die Datei wird angelegt, jedoch bleibt Sie leer. Die reguläre (ohne Umlenkung) Ausgabe auf dem Bildschirm bleibt jedoch auch leer :!:

Wo sind die Daten hin :?:

Das scp eine eigene Shell öffnet und daher der exit Code dieser Shell die Umlenkungsdatei erstellt, kann ich mir vorstellen.
Sollte dann aber nicht die reguläre Ausgabe erscheinen?

Aber viel wichtiger.
Wie schaffe ich eine Ausgabeumlenkung in eine Datei mit scp?
Zuletzt geändert von chu-i am 20.05.2007 10:49:25, insgesamt 5-mal geändert.
Thx & cya Chu-i

„Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
Benjamin Franklin (1706-1790†)

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 18.05.2006 17:46:46

das & wird da nicht funktionieren.. zumindest nicht an der stelle.. du schickst scp in den Hintergrund und wahrscheinlich schreibt er daher nicht mehr auf die Konsole.. versuchs mal ohne das &
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
chu-i
Beiträge: 157
Registriert: 10.11.2005 23:29:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

Beitrag von chu-i » 18.05.2006 17:51:16

Okay, aber bei einem beliebigen anderen Befehl funktioniert das sonst.

echo "Hallo Welt" &>> /pfad/datei - geht prima!

Ist auch der Weg den ich kenne um Stderr und Stdout in eine Datei umzulenken.
Eine andere Syntax wäre glaube ich so:

Code: Alles auswählen

Befehl >> /pfad/datei 2>&1 
Ob das Syntaktisch richtig ist weiß ich nicht, benutze normalerweise die Kurzform.

Kann mein Problem vielleicht mit der Shell zusammen hängen?

Ich nutze die ksh ...

Achja, ich hab natürlich schon andere Wege probiert .... mit tee und mit ner pipe und alle möglichen Kombinationen.
Doch leider weigert sich scp hartnäckig sein StdErr und StdOut in eine Datei umzulenken. :roll:

An der ksh scheints auch nicht zu liegen. Offensichtlich bin ich nicht der einzige der das nicht hinbekommt. Aber eine Lösung scheint nicht in Sicht. :cry:
Beitrag im Unixboard zum selben Prob.
Zuletzt geändert von chu-i am 18.05.2006 18:09:51, insgesamt 2-mal geändert.
Thx & cya Chu-i

„Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
Benjamin Franklin (1706-1790†)

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 18.05.2006 18:05:28

oh.. ksh... keine Ahnung... dies alte Ding hab ich ungern benutzt.. da war das alles ein bisschen anders..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

DeletedUserReAsG

Beitrag von DeletedUserReAsG » 18.05.2006 18:15:37

Afair benutzt scp für die lokale Ausgabe curses, das könnte schonmal Probleme bei der Umlenkung verursachen.

Ich würde das [UNGELÖST] mal wieder aus dem Topic nehmen, ist redundant.

cu

Benutzeravatar
chu-i
Beiträge: 157
Registriert: 10.11.2005 23:29:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

Beitrag von chu-i » 12.10.2006 10:37:03

@Savar das funktioniert auch nicht unter einer bash oder zsh.
Einzig die Fehlermeldungen bekomme ich gelogt.
Der Rest landet im Nirvana.
Zuletzt geändert von chu-i am 20.05.2007 10:51:08, insgesamt 1-mal geändert.
Thx & cya Chu-i

„Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
Benjamin Franklin (1706-1790†)

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 12.10.2006 11:59:47

Antwort: Gar nicht!

Das Problem ist scp selbst. Im Code findest du

Code: Alles auswählen

if (!isatty(STDERR_FILENO)) 
  showprogress = 0;
Das heisst, sobald du stderr in eine Datei umlenkst, wird implizit die Option "-q" angenommen, also kein Fortschrittsbalken angezeigt.
Es gibt keine Möglichkeit, das zu verhindern.

Welches Problem willst du denn mit der Umleitung in eine Datei lösen? Vielleicht gibt es da einen besseren, funktionierenden Weg.

Benutzeravatar
chu-i
Beiträge: 157
Registriert: 10.11.2005 23:29:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

Beitrag von chu-i » 20.05.2007 10:48:56

Vielleicht gibt es ja wirklich eine andere Lösung.
Das Problem ist folgendes:
viele Server, nur ssh Zugriff,keine root Rechte, keine Erlaubnis zu tricksen (netcat ...)

Ich möchte nun auf vielen Servern, verschiedene Befehle absetzten und die Ausgabe dann auswerten.
Interaktiv und zentral von einen Sprungserver aus.
Das kann ganz schön nerven, 10 identische Befehle auf 30 Servern abzusetzen.
Einloggen (keine key Authentifizierung möglich), Befehle (copy & paste) eingeben, Ergebnis kopieren, editieren, nächster Server ...

Kurz gesagt, ich suche eine Möglichkeit per ssh mehrere Befehl auf einem remote System starten zu können und das Ergebnis lokal zu verarbeiten.

Meines Wissens geht das nur mit key Authentifizierung und diese Möglichkeit habe ich nicht.
Thx & cya Chu-i

„Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
Benjamin Franklin (1706-1790†)

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 20.05.2007 13:01:36

Ist es dir verboten, mit public keys zu arbeiten? Wenn nein, kannst du deine ID mit ssh-copy-id rüberkopieren.

Abgesehen davon kannst du ssh auch gleich die Befehle angeben, die ausgeführt werden sollen, die Ausgabe kommt dann lokal bei dir an und kann weiterverarbeitet werden. Beispiel:

Code: Alles auswählen

ssh user@server "
Befehl1
Befehl2
Befehl3
Befehl4" > Logdatei (oder | filter)
Und um das für mehrere Server zu machen, kannst du das noch in eine
For-Schleife packen:

Code: Alles auswählen

for id in user1@server1 user2@server2 user3@server3 ; do 
  ssh $id "
Befehl1
Befehl2" > Logdatei.$id
done
Ohne public-key musst du dann zwar immer noch die einzelnen Kennwörter eingeben, aber es sollte schon um einiges vereinfacht sein.

Antworten