Hallo,
ich habe ein (ziemlich hässliches) Tool vor der Nase, das sich auf einem Remote-System einloggen, dort ein Kommando ausführen und die Daten anschließend abholen soll. Leider geht dabei irgendwas schief.
Doku gibts zu dem Tool natürlich keine. Da ich diesem Tool leider ausgeliefert bin, muss ich also anderweitig ermitteln, was es überhaupt konkret versucht, auszuführen.
Umstände: Auf allen Systemen bin ich root. Ich kann dem Tool sagen, welches "Shell command for remote computer" es nehmen soll (steht per default auf "bash --login").
Mein Ansatz: Bash history Funktioniert für interaktive remote logins (getestet), aber nicht für nicht-interaktive logins.
Kann ich der Bash irgendwie sagen, dass sie "sich interaktiv fühlen" oder trotz Nicht-Interaktivität loggen soll? (Oder hat jemand ganz andere Ansätze?)
Beste Grüße Fabian
Am 11.04.2011 um 23:05 schrieb Fabian Hänsel:
Ich kann dem Tool sagen, welches "Shell command for remote computer" es nehmen soll (steht per default auf "bash --login").
Schreib ein
set -e set -x
an den Anfang Deiner bash-Scripte. Das gibt Dir diagnostischen Output auf stderr.
HTH Sebastian -- Jeder ist notwendigerweise der Held seiner eigenen Lebensgeschichte.
Hallo Fabian,
On Mon, Apr 11, 2011 at 23:05:28 +0200, Fabian H?nsel wrote:
ich habe ein (ziemlich haessliches) Tool vor der Nase, das sich auf einem Remote-System einloggen, dort ein Kommando ausfuehren und die Daten anschliessend abholen soll. Leider geht dabei irgendwas schief.
Doku gibts zu dem Tool natuerlich keine. Da ich diesem Tool leider ausgeliefert bin, muss ich also anderweitig ermitteln, was es ueberhaupt konkret versucht, auszufuehren.
$HAESSLICHES_TOOL hat doch sicher einen Serverprozess, der die Anfragen seines Clients entgegennimmt. Haeng Dich mit strace -p $HAESSLICHE_SERVERPID -f -eexecve -s 2048 -o haesslich.log an den Server dran und ueberpruefe, welche execve() er benutzt.
Gruss, Chris
Fabian Hänsel fabtagon@gmx.de (Mon Apr 11 23:05:28 2011):
Hallo,
ich habe ein (ziemlich hässliches) Tool vor der Nase, das sich auf einem Remote-System einloggen, dort ein Kommando ausführen und die Daten anschließend abholen soll. Leider geht dabei irgendwas schief.
Wie loggt es sich dort ein? SSH? Dann wäre aber das mit dem remote Shell command irgendwie komisch, weil die SSH die Shell aus dem Passwort-Eintrag verwendet.
Bei der SSH könnte -v helfen.
Doku gibts zu dem Tool natürlich keine. Da ich diesem Tool leider ausgeliefert bin, muss ich also anderweitig ermitteln, was es überhaupt konkret versucht, auszuführen.
Umstände: Auf allen Systemen bin ich root. Ich kann dem Tool sagen, welches "Shell command for remote computer" es nehmen soll (steht per default auf "bash --login").
Vielleicht hilft schon
bash --login -x
Kann aber gut sein, daß die übermäßige Ausgabe für gewisse Unruhe sorgt. Dann vielleicht als remote command ein Wrapper, der STDERR nach irgendwo leitet.
Moin,
wie wäre es, remote screen oder script laufen zu lassen?
Notfalls kann auch sudo mit loginput und logoutput die session mitloggen.
Da du das remote aufgerufene Kommando ja verändern kannst, sollte das doch reichen, oder?
Gruß Andre
Hej Andre,
2011-04-12 15:23, Andre Klärner skrev:
wie wäre es, remote screen oder script laufen zu lassen?
Da du das remote aufgerufene Kommando ja verändern kannst, sollte das doch reichen, oder?
Das ist natürlich eine Idee,
script als Shell anzugeben hilft da nicht so sehr (weil der Tool offenbar "$shell $seltsamerAufruf" remote ausführen will (und script nur mitloggt, was nun in $seltsamerAufruf abgeht).
Aber die Idee ist wunderbar. Schnell eine neue "Shell" geschrieben und im Tool eingetragen:
#!/bin/bash echo $* >> /home/user/log bash $*
Schon landen haufenweise seltsame Aufrufe im log.
Vielen Dank & Beste Grüße Fabian
Fabian Hänsel fabtagon@gmx.de (Tue Apr 12 16:03:44 2011):
Hej Andre,
2011-04-12 15:23, Andre Klärner skrev:
wie wäre es, remote screen oder script laufen zu lassen?
Da du das remote aufgerufene Kommando ja verändern kannst, sollte das doch reichen, oder?
Das ist natürlich eine Idee,
script als Shell anzugeben hilft da nicht so sehr (weil der Tool offenbar "$shell $seltsamerAufruf" remote ausführen will (und script nur mitloggt, was nun in $seltsamerAufruf abgeht).
Aber die Idee ist wunderbar. Schnell eine neue "Shell" geschrieben und im Tool eingetragen:
#!/bin/bash echo $* >> /home/user/log bash $*
Du möchtest "$@" statt $* nutzen! (Mit den Quotes, sonst ist es nutzlos.)
Hallo,
entschuldigt, ich hätte das mit dem einloggen wohl klarer formulieren müssen. Das Tool ist in Java geschrieben und loggt sich per SSH ein (Passworteingabe nicht notwendig, Authentifikation geschieht per ssh-agent und allowed key). Es werden Skripts und Binaries rüberkopiert und dann mir unbekannte Aufrufe gestartet. Das Tool zeigt mir auch den remote output an, aber nicht die Aufrufe. Gelegentlich findet sich im output ein ": File not found", aber nicht, welche Datei er denn nun nicht gefunden hat.
Die Bash-History steht auf append.
$ ssh user@remote remote$ echo hallo hallo ^D $
=> jetzt steht 'echo hallo' in der .bash_history
$ ssh user@remote echo\ huhu huhu $
=> dieses Kommando taucht nicht in der History auf. Hier hatte ich gehofft, dass es einen einfachen Mechanismus gäbe, dass zu ändern.
2011-04-12 10:11, Heiko Schlittermann skrev:
Vielleicht hilft schon
bash --login -x
Leider
2011-04-12 07:50, Sebastian Hegler skrev:
set -e set -x
Das Tool legt zwar remote ein paar Skripte ab, aber blöderweise schreibt es die vor jedem remote-Aufruf neu, sodass ich da nicht dran herummanipulieren kann.
Danke euch allen trotzdem! Fabian
2011-04-12 15:58, Fabian Hänsel skrev:
2011-04-12 10:11, Heiko Schlittermann skrev:
Vielleicht hilft schon
bash --login -x
Leider
(Ähm, leider wurde hier eine unfertige Mail abgeschickt)
Im Test 'per Hand' liefert -x das gesuchte, seltsamerweise fehlen im remote output alle diagnostischen Meldungen.
Aber gut, mit dem loggenden Skript als Shell habe ich ja jetzt die benötigten Daten.
Danke dir trotzdem & Viele Grüße Fabian
lug-dd@mailman.schlittermann.de