Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

08.02.2006, 10:23

[gelöst] telnet (NC) per script auswerten

Hallo,

ich habe eine fritzbox, die mir über telnet auf port 1012 Anrufinfos ausgibt, in der Form:

06.02.06 11:20;0301234567;0;RING;01791234567;0
06.02.06 11:25;0301234567;0;DISCONNECT;01791234567;0

Jetzt habe ich auf meiner NSLU2 unter unslung 5.x ein schönes shell-script laufen, das mir zu jeder Nr. den passenden Namen von www.dasoertliche.de raussucht und auf meinem PC signalisiert: notify.sh 0301234567

Wenn ich das script alleine aufrufe, klappt alles bestens. Jetzt will ich die beiden (telnet & script) koppeln, benutze nc, weil unslung kein telnet hat:

nc fritz.box 1012 ¦ grep RING ¦ notify.sh

Habe auch schon in das notify.sh ein read nr eingebaut, damit er von stdin liest.

Nix passiert. Meine Vermutung ist, dass das daran liegt, dass der telnet kein EOF sendet und daher auch beim notify nix ankommt. Wie kann ich das lösen? Bitte helft einem Blinden!

2

08.02.2006, 11:10

hi e18,

ich denke das problem ist die uebergabe der grep-kommando-ausgabe an das script notify.sh.

Schau dir mal xargs an:
http://www.linux-praxis.de/lpic1/manpages/xargs.html

zb:
nc fritz.box 1012 ¦ grep RING ¦ xargs notify.sh
oder
nc fritz.box 1012 ¦ grep RING ¦ xargs notify.sh {}

gruß epikur
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

3

08.02.2006, 11:19

vielen dank! das ging ja schnell :-)

sieht erstmal genau danach aus, wonach ich suche. werd's heute abend probieren.

4

09.02.2006, 17:02

Zitat

Original von epikur

zb:
nc fritz.box 1012 ¦ grep RING ¦ xargs notify.sh
oder
nc fritz.box 1012 ¦ grep RING ¦ xargs notify.sh {}

gruß epikur


IRgendwie komme ich da nur begrenzt weiter: das xargs scheint zusätzlich noch auf ein EOF von stdin zu warten, ich habe folgendes probiert:

nc fritz.box 1012 ¦ grep RING ¦ xargs

(weil standard commando von xargs ist ja echo.

Jetzt passiert solange nix, bis ich an CTRL-D eingebe, dann kommen hübsch meine Ergebnisse.

Was mache ich falsch?

5

09.02.2006, 17:29

hi e18,

xargs uebergibt nur das ergebnis weiter - da brauchs noch ein kommando
z.B.:
nc fritz.box 1012 ¦ grep RING ¦ xargs less
oder
nc fritz.box 1012 ¦ grep RING ¦ xargs -i cat {}
...
find / 2>/dev/null | xargs cat > IchMachNeGrosseDateiVollMuell.txt 2>&1

gruß epikur
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

6

09.02.2006, 17:52

schon klar.

aber auch nc fritz.box 1012 | grep RING | ./notify.sh geht erst, wenn ich CTRL-D drücke, daher habe ich es nochmal ganz ohne command ausprobiert.

Hast Du ne Ahnung, wo ich das EOF / CTRL-D automatisch herkriege?

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

7

09.02.2006, 19:28

mal eine kurze idee
das teil muss doch sowieso irgendwie in einer schleife laufen, denn wenn eine telefonnummer ermittelt ist, kann doch der nächste anruf kommen und da nie ein eof kommt, wird durch die pipe nichts weiter gegeben.
wenn du nun die ausgabe von nc in ein logfile schiebst, zb
nc fritz.box 1012 > /tmp/logfile
und dir dann in einer schleife mit tail immer ein stück vom ende abschneidest

Quellcode

1
2
3
4
while ZEILE=$( tail -1 /tmp/logfile )
do
 echo $ZEILE | grep ......
done


nur so eine idee
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »linuxerr« (09.02.2006, 19:28)


8

09.02.2006, 19:59

hi e18,

wie man ein ctrl-D uebergibt weiss ich nicht :keineahnung:

... aber vielleicht kommst du mit -exec weiter:

# nc fritz.box 1012 ¦ grep RING -exec notify.sh {} \;

# nc fritz.box 1012 ¦ grep RING -exec cat {} \;

gruß epikur

PS: der ansatz von linuxerr ist auch gut ...
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »epikur« (09.02.2006, 20:11)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

9

09.02.2006, 20:10

@epikur

-exec gibts doch bei grep gar nicht, sondern zb bei find??
das problem ist, dass ohne eof von nc nichts aus der pipe kommt.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

10

09.02.2006, 20:12

Zitat

Original von linuxerr
das problem ist, dass ohne eof von nc nichts aus der pipe kommt.


Genau so sehe ich das auch. Gibts da kein Heilmittel gegen?

11

09.02.2006, 20:15

@linuxerr
ups =D ich glaub ich brauch auch noch ein bisschen shell-nachhilfe =D
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

12

09.02.2006, 20:28

@e18
wie gesagt, eine schleife musst du ja sowieso erstellen. probier doch mal meinen vorschlag von oben.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

13

09.02.2006, 20:37

so: schleife ist gemacht. Ergebnis leider noch nicht zufriedenstellend:

das script wird im sekundenabstand aufgerufen, ohne rücksicht auf verluste.....

(edit)
nein es geht!!!!!!!! habe noch xargs -r dahintergehängt, jetzt kommen wir der sache näher.

Wie kann ich nc fritz.box > /tmp/fritz in den Hintergrund schicken? wenn ich das & ranhänge, sagt er beim nächsten enter "exit"

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »e18« (09.02.2006, 20:50)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

14

09.02.2006, 20:50

Zitat

Original von e18
Wie kann ich nc fritz.box > /tmp/fritz in den Hintergrund schicken? wenn ich das & ranhänge, sagt er beim nächsten enter "exit"

portnummer vergessen?
wenn du das ganze in der shell startest, wird der prozess beendet, wenn du dich in der shell abmeldest. also entweder durch ein startscript oder in der shell mitnohup starten. dann läuft es auch nach schliessen der shell weiter.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

15

09.02.2006, 20:53

ne port war dabei, ich starte direkt von der Kommandozeile, sieht so aus:

#nc fritz.box 1012 > /tmp/fritz &
# (nochmal enter gedrückt)
[1] 18745 Exit 0 nc fritz.box 1012 >/tmp/fritz
#

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

16

09.02.2006, 21:15

Zitat

Original von e18
ne port war dabei, ich starte direkt von der Kommandozeile, sieht so aus:

#nc fritz.box 1012 > /tmp/fritz &
# (nochmal enter gedrückt)
[1] 18745 Exit 0 nc fritz.box 1012 >/tmp/fritz
#


Du willst die Manpage der Bash lesen und Dir da den Abschnitt "REDIRECTION" ansehen (``info -f bash -n Redirections'').
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

17

10.02.2006, 13:50

hallo, mir ist noch etwas eingefallen. in meinem letzten posting ist mir ein denkfehler mit dem tail unterlaufen. also mein vorschlag.
du erstellst ein kleines script in das du die ausgabe von nc umleitest.
in diesem script wird mit dem kommando line immer eine zeile des endlosen datenstroms abgetrennt und kann mit grep bearbeitet werden. nehmen wir an, dass script heißt telnumber, dann wird die ganze sache gestartet mit
nc fritz.box 1021 > /pfad_da_hin/telnumber
das script selbst sieht dann so aus

Quellcode

1
2
3
4
5
6
7
#!/bin/sh
# shellscript telnumber
#
while ZEILE=$( line )
do
 echo $ZEILE | grep ......
done
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »linuxerr« (10.02.2006, 13:51)


18

11.02.2006, 15:07

hmmm, das Kommando line kennt mein system wohl nicht....
gibts da eine alternative?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »e18« (11.02.2006, 15:07)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

19

11.02.2006, 15:46

als alternative vielleicht ein perlscript. das kommando /usr/bin/line ist bei den linux-utils oder util-linux dabei, die gehören eigentlich zu fast jeder distribution dazu. welches system hast du denn genau?
jedenfalls geht das mit line hervorragend.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

20

11.02.2006, 16:35

ich habe eine Linksys NLSU mit unslung 5.x drauf, das ist so ein kleines Kistchen zum USB-Platten ins Netz-hängen, dass auf ein schnalspur-Linux für embedded ARM aufgemotzt ist. Superteil, aber eben keine vollständige Linux Distribution.

siehe auch hier: http://www.nslu2-linux.org/wiki/Unslung/PackageSections

Meinst Du readline ginge? (package misc)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »e18« (11.02.2006, 16:40)


Thema bewerten