Frage

Ich versuche, Ausgabe von einem Installationsskript zu erfassen (das verwendet scp) und log sie. Aber ich bin immer nicht alles, was scp druckt aus, nämlich die Fortschrittsbalken.

Bildschirmausgabe:

  

Kopieren   / User2 / cdb / Builds / tmp / uat / myfiles / * zu   Server / Benutzer / myfiles als cdb

     

cdb @ server-Passwort:   myfile 100% | ***************************** | 2503 00.00

Log-Ausgabe:

  

Kopieren   / User2 / cdb / Builds / tmp / uat / myfiles / * zu   Server / Benutzer / myfiles als cdb

Ich würde wirklich gerne wissen, dass meine Datei dort ankamen. Hier ist, was ich versuche jetzt ohne Erfolg:

  

myscript.sh 2> & 1 | tee mylogfile.log

Hat jemand eine gute Möglichkeit, scp Ausgabe und melden Sie es zu erfassen?

Danke.

War es hilfreich?

Lösung

Es sieht aus wie Ihr gerade fehlt, ob die scp war erfolgreich oder nicht aus dem Protokoll.

Ich vermute, die Bildlaufleiste nicht auf die Standardausgabe nicht gedruckt und verwendet ncurses oder eine andere Art von TUI?

Sie könnten bei dem Rückgabewert von scp aussehen nur um zu sehen, ob es erfolgreich war. Wie

scp myfile user@host.com:. && echo success!

man scp sagt

scp exits with 0 on success or >0 if an error occurred.

Andere Tipps

scp druckt seine Fortschrittsbalken an den Terminal-Steuercodes. Es erkennt, ob Sie die Ausgabe umleiten und so den Fortschrittsbalken weglassen.

können Sie erhalten rund um die scp von austricksen zu denken, es in einem Terminal läuft das „Script“ Befehl, der auf den meisten Distributionen standardmäßig installiert ist:

script -q -c "scp server:/file /tmp/" > /tmp/test.txt

Der Inhalt test.txt wird:

file    0%    0     0.0KB/s   --:-- ETA
file   18%   11MB  11.2MB/s   00:04 ETA
file   36%   22MB  11.2MB/s   00:03 ETA
file   54%   34MB  11.2MB/s   00:02 ETA
file   73%   45MB  11.2MB/s   00:01 ETA
file   91%   56MB  11.2MB/s   00:00 ETA
file  100%   61MB  10.2MB/s   00:06

... und das ist wahrscheinlich das, was Sie wollen.

ich über dieses Problem gestolpert, während die Ausgabe eines interaktiven Skripts in eine Log-Datei umgeleitet werden. Im Protokoll nicht die Ergebnisse, die war kein Problem, da man immer Exit-Codes auswerten kann. Aber ich wirklich den interaktiven Benutzer wollte die Fortschrittsbalken zu sehen. Diese Antwort löst beide Probleme.

Vielleicht können Sie ‚ Skript ‘anmelden, um die Terminal-Sitzung.

scp myfile user@host.com:. && echo success! 

ist sehr hilfreich, aber die Nachricht in eine Protokolldatei schreiben ich es wie folgt geändert

scp myfile user@host.com:. && echo myfile successfully copied! >> logfile 2>&1

und dies wird schreiben „MyFile erfolgreich kopiert!“ Nachricht an die Protokolldatei.

Versuchen:

scp server:/file /tmp/ > /dev/tty

Ich kann noch nicht kommentieren :( also werde ich ein Update hier hinzufügen ...

@ Martin hatte die beste Lösung für mich, obwohl, wenn Ihr Befehl scp auf halbem Weg durch das Skript wird dann ausgegeben, es ist kann nach Befehlen angezeigt, die tatsächlich danach liefen.

Ich denke, das liegt daran, dass Skript muss den Befehl in einer Subshell laufen, aber ich bin noch zu testen.

EDIT: es in der Tat eine Shell nicht laichen so, wenn Sie Dinge ausführen müssen (und nicht in der Tat) in einer sequentiellen Weise (wie in einem Build-Skript), dann würden Sie eine gewisse Logik um die Verwendung des Script-Befehl hinzufügen.

d.

Skript -q -c "Ihr Befehl" && sleep 1

oder etwas ähnliches, so dass Ihre Eltern-Shell wartet auf das Kind Shell, bevor sie zu beenden.

Ja, ich vor kurzem versuchte Ausgabe innerhalb eines PHP-Skript von proc_open zu erhalten () Ich verlor eine ruhige eine Zeit versucht Ausgang :-) zu bekommen aber es ist ein bisschen spät hier und ich dann Lesen dieser Nachricht hier wurde mir klar, dass ich nicht wirklich brauchen diese Ramsch Ausgang mein Skript

nur der Exit-Code wird den Job: -)

$ exit_code = proc_close ($ process);

$ grep -r "Error" xyz.out > abc.txt

Hier in dem obigen Befehl I Ausgabe in Datei abc.txt ist zu speichern.

Dieses grep Befehl ist für die Textsuche containg Fehler in der Datei xyz.out und Speichern der Ausgabe in abc.txt ohne auf Konsole Anzeige .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top