Wie am besten erfassen und melden scp-Ausgang?
Ich versuche zu erfassen Ausgabe ein install-script (scp verwendet) und melden Sie es. Allerdings bin ich nicht immer alles, was scp ist Ausdruck, nämlich die progress bar.
Ausgabe auf dem Bildschirm:
Kopieren
/user2/cdb/builds/tmp/uat/myfiles/*
server /Benutzer/myfiles als cdbcdb@server ' s password:
myfile 100% |*****************************| 2503 00:00
log-Ausgabe:
Kopieren
/user2/cdb/builds/tmp/uat/myfiles/*
server /Benutzer/myfiles als cdb
Ich würde wirklich gerne wissen, dass meine Datei kam. Hier ist, was ich versuche jetzt ohne Erfolg:
myscript.sh 2>&1 | tee mylogfile.melden Sie
Kennt jemand eine gute Möglichkeit zum erfassen der scp-Ausgabe, und Protokoll?
Dank.
InformationsquelleAutor caseyboardman | 2008-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie deine nur fehlt, ob der scp erfolgreich war oder nicht, aus dem Protokoll.
Ich vermute, dass die Bildlaufleiste nicht eine Ausgabe auf stdout und benutzt ncurses oder eine andere Art von TUI?
Konnten Sie gerade Aussehen bei der Rückgabewert von scp, um zu sehen, ob es erfolgreich war. Wie
man scp
sagtInformationsquelleAutor Tarski
scp gibt seinen Fortschritt bar zum terminal mit control-codes. Es wird erkannt, wenn Sie umleiten der Ausgabe und damit das auslassen der Fortschrittsbalken.
Können Sie umgehen, indem Sie trickst scp zu denken, es läuft in einem terminal mit dem "script" - Befehl, welcher installiert ist auf den meisten Distributionen standardmäßig:
Den Inhalt test.txt werden:
...das ist wahrscheinlich das, was Sie wollen.
Stolperte ich über das problem beim umleiten der Ausgabe eines interaktiven Skript in eine log-Datei. Nicht dass die Ergebnisse im Protokoll war kein problem, da kann man immer auswerten exit-codes. Aber eigentlich wollte ich ja den interaktiven Benutzer zu sehen, die Fortschritt-bar. Diese Antwort löst beide Probleme.
--return
(-r
) option fürscript
, wenn es verfügbar ist, so ist der return-code der Kind-Prozess erhalten werden. Ansonsten, auch wenn der Befehl fehlschlägt, wird Ihrscript
Befehl gerne zurückgeben eine "success" - code.InformationsquelleAutor Martin
Vielleicht können Sie 'Skript' das protokollieren der Terminalsitzung.
InformationsquelleAutor ayaz
ist sehr hilfreich, aber zum schreiben der Nachricht in einer log-Datei, die ich geändert es so
und das schreiben "myfile erfolgreich kopiert!" - Meldung in die log-Datei.
InformationsquelleAutor Fekensa D.
Versuchen:
InformationsquelleAutor Benjamin Crouzier
ja, ich habe vor kurzem versucht hatte, Sie zu bekommen-Ausgabe in einem php-Skript von proc_open()
ich verlor eine ruhige Zeit versuchen zu bekommen output 🙂
aber es ist ein bisschen spät hier, und ich dann diesen Beitrag Lesen, hier machte mir klar, dass ich nicht wirklich brauchen junky Ausgabe in meinem Skript
nur der exit-code wird die Arbeit machen 🙂
$exit_code = proc_close($process);
InformationsquelleAutor
Kann ich nicht kommentieren noch: - ( so werde ich hier ein update...
@Martin hatte für mich die beste Lösung, obwohl, wenn Ihr scp-Befehl ist in der Mitte durch dein script dann die Ausgabe kann nach erscheinen Befehle, die tatsächlich lief hinterher.
Ich denke das liegt daran, Skript ausführen müssen Sie den Befehl in einer subshell, aber ich bin noch nicht testen.
EDIT: es ist in der Tat erzeugen ein shell-also, wenn Sie müssen die Dinge zu laufen (und in der Tat scheitern) in einer sequentiellen Weise (wie in einem build-Skript), dann müssten Sie eine gewisse Logik, um die Verwendung des script-Befehls.
d.h.
script -q -c "dein Befehl" && sleep 1
oder etwas ähnliches, so dass Sie Ihre übergeordneten shell wartet, bis das Kind die shell zu beenden, bevor Sie fortfahren.
InformationsquelleAutor sysadmiral
Hier in dem obigen Befehl, den ich bin die Speicherung der Ausgabe in Datei abc.txt.
Diese
grep
Befehl ist für die Suche nach text mit Fehler in der Datei xyz.aus und speichern Sie die Ausgabe in abc.txt ohne Anzeige auf der Konsole.InformationsquelleAutor ravi teja Kadem