PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script soll stdout verarbeite und message an stdin senden



saiph
29.07.2005, 13:50
hey hey...

:hilfe2:
wollte mal verscuhen einige programme wi micq in der shell zu automatisieren
und nun habe ich da folgendes problem:

wie kann ich mit nem shellscript den stdout verarbeiten (einlesen und darauf reagieren)
und dann etwas zu stdin senden??

wie eine art chatbot für micq (ich danke das trifft es am besten)

tr0nix
29.07.2005, 14:19
Hi saiph

Ich behaupte mal salopp was du dir vorstellst geht nicht ;). Du kannst zwar mit "read" den Input einlesen, diesen jedoch meines Wissens nicht an den stdin eines anderen Terminals senden so, dass er verarbeitet wird.

Gruss
Joel

saiph
29.07.2005, 14:52
mhhh...
son mist!
und wie schaffe ich es stdin in eine datei zu schreiben
und wie schaffe ich es etwas nach stdout stdout zu sendn?

ich mein wir reden ihr ja schließlich über linux und nicht übe windows
das muss doch gehen!

MrFenix
29.07.2005, 15:00
Hmm ich behaupte mal ganz salopp, dass das so nichts geben wird.
Aber du kannst was anderes machen... mICQ ist Opensource, also nimm den Quelltext und füge deinen Bot direkt im Programm ein!

Wolfgang
29.07.2005, 15:06
Hallo
Um das was du vorhast anzugehen wirst du dich wohl mal mit der Materie Socket auseinandersetzen müssen.
Das ist natürlich nicht so trivial, aber nur mal so als Anstoß in welche Richtung du dein Wissen erweitern musst.
Aber es gibt natürlich auch hier ein paar tricky Umbiege Lösungen :D
Schau dir mal die Möglichkeiten von z.B. netcat an. :think:

Da könntest du nämlich eine schöne Pipe mit einem redirect über eine locale Resource basteln.
Dazu musst du die Netzkatze nur am richtigen Port lauschen lassen und dort könntest du dann mit tee eine logdatei basteln, die du schön laufend auf ein tty deiner Wahl ausgeben kannst tail Option -f e.g. ...
Na dann bastel mal :D
Gruß Wolfgang

Schlaubi_fi.de
29.07.2005, 19:58
und ich behaupte mal so salopp....DOCH GEHT SCHON - geht nicht - gibts nicht :D


Guck dir doch mal expect an, das basiert auf Tcl/Tk. Damit kannst du Ausgaben abfangen und dementsprechend darauf reagieren, sprich Kommandos an einen Prozess schicken.

tr0nix
29.07.2005, 21:56
nene schlaubi, so einfach ist das nicht. Expect ist 1. wie du gesagt hast tcl/tk und 2. ist micq soweit ich weiss etwas mit ncurses und das kannst du selbst mit einem expect nicht bedienen (*behaupt*).

Das mit den sockets ist ebenfalls eine nette Idee, jedoch artet das grob in ein Gebastel aus.. ich spreche da aus eigener Erfahrung :).

Wie gesagt, sobald was mit ncurses ist kannste das IMHO vergessen mit fernsteuern. Was genau willst du denn machen? Vielleicht gibts andere Tools dafuer!

MrFenix
30.07.2005, 00:12
Wozu soll das mit den Sockets denn gut sein? Wie gesagt, das ist doch Open Source, da kann man auch direkt im Programm einbaun was man haben will!

Wolfgang
30.07.2005, 00:56
Wozu soll das mit den Sockets denn gut sein? Wie gesagt, das ist doch Open Source, da kann man auch direkt im Programm einbaun was man haben will!

Was hat denn das mit open source zu tun?
Weisst du worüber du redest?
Weisst du was und wozu sockets da sind?
Ich denke, du solltest da erstmal nachlesen, bevor du hier sowas ablässt.
Ein Socket definiert genau eine Verbindung, über welche dann das vereinbarte Protocoll Daten austauschen kann.
Du hast im Falle von irc z.B. meist den Port 6667 und eine source und dest IP resp. Port.
Genau das macht den Socket für diese Verbindung aus, aus welcher du Daten bekommst und auch senden kannst.
Klar ist, dass es nicht so kompliziert ist, wenn ich z.B. ein perl-Modul dafür verwende, um aus einem erzeugten Socket Daten zu lesen oder zu schreiben.
Aber das setzt in jedem Fall voraus, dass ich weiß wie das generisch funktioniert.

Nur mal so am Rande bemerkt

Gruß duck und wech
Wolfgang

tr0nix
30.07.2005, 06:50
Du willst also schlussendlich einen Shellscript-IRC-Clienten programmieren? Dies sollte mit socket moeglich sein, jedoch ist zu beachten, dass das meistens nicht sehr stabil laeuft..

MrFenix
31.07.2005, 20:07
Was hat denn das mit open source zu tun?
Weisst du worüber du redest?
Weisst du was und wozu sockets da sind?

Das man sich die Mühe beispielsweise bei micq auch sparen kann und gleich die automatisierten Funktionen in den Source einbauen kann, sodass man nicht erst umständlich stdin und stdout oder den Netzwerktraffic abfangen muss.
Ja.
Ja auch schon vorher.