valino
Anmeldungsdatum: 8. Februar 2017
Beiträge: 22
|
Hallo, ich hoffe ich bin hier richtig und ihr könnt mir weiter helfen. Es handelt sich um miracleCast ein MiraCast Server, der beim Anmelden eines Devices einen 8 Stelligen Pin ausspuckt. Diesen Pin möchte ich gerne per | notify-send -t 0 "MiracleCast-Pin BERRY " "hier soll dann der Pin stehen"
|
auf dem Desktop erscheinen lassen. Die laufende Shell erzeugt beim Anmelden des Devices folgende Zeile
| [PROV] Peer: 66:db:43:f9:6e:67@3 Type: display PIN: 98988204
[PROV] Peer: 66:db:43:f9:6e:67@3 Type: display PIN: 63086775
|
Nun möchte ich nur die zweite Zeile an nofity senden! Und logischerweise ändert sich der Pin ständig. Starten tue ich das Programm mit dem Befehl | sudo miracle-sinkctl run 3
|
Kann mir jemand weiterhelfen die Zeile zu vervollständigen? Vielen dank im Voraus.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Verstehe ich das richtig, dass er einmalig eine Reihe Zeilen zurückgibt, davon willst Du nur die letzte Zeile, und davon das letzte Wort nehmen ? Das geht sowohl mit sed als auch mit awk ganz einfach: track@track:~$ echo '[PROV] Peer: 66:db:43:f9:6e:67@3 Type: display PIN: 98988204
> [PROV] Peer: 66:db:43:f9:6e:67@3 Type: display PIN: 63086775' | sed -n '$ s/.* //p'
63086775
track@track:~$ echo '[PROV] Peer: 66:db:43:f9:6e:67@3 Type: display PIN: 98988204
[PROV] Peer: 66:db:43:f9:6e:67@3 Type: display PIN: 63086775' | awk 'END { print $NF }'
63086775
LG, track
|
valino
(Themenstarter)
Anmeldungsdatum: 8. Februar 2017
Beiträge: 22
|
Er gibt leider nicht einmalig eine Zeile zurück sondern laufe des Prozesses immer wieder.... Muss quasi nach display PIN: suchen (im laufenden Prozess) um die nächsten 8 Zeichen weiter zu schicken... Aber soweit erstmal danke Sieht quasi so aus
1
2
3
4
5
6
7
8
9
10
11
12 | sudo miracle-sinkctl run 3
[sudo] Passwort für valino:
[ADD] Link: 3
now running on link 3
[miraclectl] #
[ADD] Peer: 66:db:43:f9:6e:67@3
[PROV] Peer: 66:db:43:f9:6e:67@3 Type: display PIN: 79796293
[CONNECT] Peer: 66:db:43:f9:6e:67@3
now running on peer 66:db:43:f9:6e:67@3
NOTICE: SINK connected
SINK set resolution 720x480
[miraclectl] #
|
|
valino
(Themenstarter)
Anmeldungsdatum: 8. Februar 2017
Beiträge: 22
|
Bin zumindest schon mal mit notify weiter gekommen
| echo 'hier muss dann der Pin rein' | while read PIN_OUT; do notify-send -i /home/valino/Bilder/miracast.png -t 0 "BerryCast " "PIN: $PIN_OUT"; done
|
|
schusch
Anmeldungsdatum: 2. September 2008
Beiträge: 324
Wohnort: Berlin
|
| awk '$1 == "[PROV]" {print $NF}'
|
Gibt für alle Zeilen die mit "[PROV]" anfangen das letzte Feld aus. Wenn dich von diesen Zeilen nur die letzte Zeile interessiert: | awk '$1 == "[PROV]" {print $NF}' | sed -n '$p'
|
|
valino
(Themenstarter)
Anmeldungsdatum: 8. Februar 2017
Beiträge: 22
|
Hi, Was nicht so recht was Sinnvoll wäre als Auslöser?! Das mit dem Desktop Starter verstehe ich leider nicht ganz...
Vermute ein Skript als Desktop starter der beim betätigen den Pin ausliest Wenn ich das Richtig verstehe, wäre es mir lieber wenn es es automatisch Passiert. Habe mir vorgestellt einfach was hinter denn "sudo miracle-sinkctl run 3 " befehl zu hängen, was wenn die PIN Zeile kommt automatisch an Notyfy weiter schickt. Hast du eine Idee? p.s. i-wie kann ich meine Beträge nicht mehr sehen ?! Moderiert von jug: Und noch zwei weitere Beiträge hier angehängt.
|
valino
(Themenstarter)
Anmeldungsdatum: 8. Februar 2017
Beiträge: 22
|
Um die Sache vielleicht ein bisschen zu vereinfachen ist es auch vollkommen super wenn nicht nur die letzten 8 Zeichen sondern die ganze Zeile "display PIN: 98654680" weiter geleitet wird.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
So - nun noch einmal konkret, nachdem Deine Frage mit der Frage in dem anderen Strang durcheinander gelaufen war ... (und ich es erst nicht gemerkt hatte) Wann spuckt das miracle-sinkctl jeweils eine neue Pin aus ? - bei jedem Aufruf, oder automatisch alle 2 Minuten ? Und soll die dann automatisch mit notify-send angezeigt werden, oder wie dachtest Du das ? (wie man die Pin aus so einer Zeile holen kann, hatte ich ja schon gezeigt. - und das kann man ggf. ja auch noch genauer filtern) LG, track
|
valino
(Themenstarter)
Anmeldungsdatum: 8. Februar 2017
Beiträge: 22
|
Fürs Verständnis MiracleCast bzw. miracle-sinkctl ist ein Wifi-Display. Er Streamt z.B. den Android Display (Handy/Tablet) auf den Monitor oder TV. Bei Verbinden vom Handy an den Rechner (miracle-sinkctl) erzeugt er bei jedem Anmelden eines Handy/Tablet einen neuen Pin. Und diesen Pin soll dann automatisch mit notify-send angezeigt werden.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ok, also fehlt Dir jetzt nur noch der Filter, der aus den ganzen Zeilen die Pin heraus filtert ? Denn eine Schleife, mit der du jedes Mal die Pin anzeigst, hast Du hier oben ja schon gebaut. Im Grunde musst Du jetzt nur meinen Filter von oben von "nimm die letzte Zeile" umstellen auf "nimm die Zeile mit der Pin". Und eventuell den Filter überreden, dass er das Ergebnis sofort ausspuckt, und nicht erst irgendwo im Puffer sammelt: sudo miracle-sinkctl run 3 | sed -n --unbuffered '/^\[PROV]/ s/.* //p' | # (und hier kommt Deine while read - Schleife ...)
sudo miracle-sinkctl run 3 | awk '/^\[PROV]/ { print $NF; fflush() }' | # (und hier kommt Deine while read - Schleife ...) Zum Verständnis solltest Du Dir am besten mal das sed -Tutorium und die awk -Einführung durchlesen. Weitere Details (z.B. das mit dem Puffer) findest Du im sed - Manual und in man awk . Was mir auch noch nicht klar ist: startest Du jedes Mal dieses Skript (womöglich mit Hand ?), wenn Du das Tablet anstöpselst ? track
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ach so, da steht auch noch anderes Zeug zwischen ! - das musst Du doch mal sagen. (natürlich - sowohl sed als auch awk können ganz prima nach Stichworten filtern !) Auch damit geht das alles, nur muss man dann was anderes als Auslöser benutzen. Womit wolltest Du denn die Anzeige auf dem Desktop auslösen ? - mit dem .desktop-Starter, während Dein miracle-sinkctl im Hintergrund weiter werkelt ? ( da wäre wahrscheinlich tail -f interesant !) - oder soll es bei jedem starten des .desktop auch neu gestartet werden ? Wie gesagt: das geht alles, Du musst nur mal ein paar (echte !) Details weiter verraten, und nicht scheibchenweise immer was neues servieren. LG, track Moderiert von sebix: An richtigen Thread angefügt.
|
valino
(Themenstarter)
Anmeldungsdatum: 8. Februar 2017
Beiträge: 22
|
1000 Dank; werde es morgen mal in Ruhe ausprobieren und dir dann Rückmeldung geben. Aber um deine Frage noch schnell zu beantworten. Nein das Skript läuft durch gehend und wenn ich dann was streamen will, verbindet ich das Tablet. Hab nen Pi und er ist bekannter weise nicht ganz so fit im Filme abspielen. Dafür nutze ich dann das Tab und kann so die Filme trotzdem 1a auf dem großen Bildschirm sehen.
|
valino
(Themenstarter)
Anmeldungsdatum: 8. Februar 2017
Beiträge: 22
|
Es klappt leider nicht! Bisher war es so: | valino@berry:~$ sudo miracle-sinkctl run 3
[sudo] Passwort für valino:
[ADD] Link: 3
now running on link 3
[miraclectl] #
|
Dann verbinde ich mich mit dem Tab | [ADD] Peer: 66:db:43:f9:6e:67@3
[PROV] Peer: 66:db:43:f9:6e:67@3 Type: display PIN: 92793439
[miraclectl] #
|
gebe denn Pin ein | [CONNECT] Peer: 66:db:43:f9:6e:67@3
now running on peer 66:db:43:f9:6e:67@3
NOTICE: SINK connected
SINK set resolution 720x480
[miraclectl] #
|
Wenn ich allerdings * eingeben oder andere Versionen | sudo miracle-sinkctl run 3 | awk '/^\[PROV]/ { print $NF; fflush() }' | while read PIN_OUT; do notify-send -t 0 "BerryCast " "PIN: $PIN_OUT"; done
|
Spuckt er mir nur * aus Und ein Pin erscheint leider auch nicht auf dem Desktop, geschweige denn das ich noch was nach vollziehen kann. Gibt es dich Möglichkeit, das Programm weiter läuft zu lassen und das es mir wieder infos ausgibt obwohl ich eine weitere Befehlskette eingebe? Habe es versucht zu googlen aber hab wohl nicht die richtigen Worte benutzt
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ja, so eine Möglichkeit zum "abzweigen" des Texts gibt es: → tee . Wenn Du damit in das device /dev/stderr schreibst, siehst Du es auch im Terminal: sudo miracle-sinkctl run 3 | tee /dev/stderr | awk '/^\[PROV]/ { print $NF; fflush() }' | while read PIN_OUT; do notify-send -t 0 "BerryCast " "PIN: $PIN_OUT"; done Sonst könntest Du das ganze Zeug zu Debuggingzwecken auch in eine Datei schreiben. Da findest Du eventuelle Sonderzeichen dann leichter. LG, track
|
valino
(Themenstarter)
Anmeldungsdatum: 8. Februar 2017
Beiträge: 22
|
Jetzt kann ich zwar alles wieder sehen. - DANKE
aber den pin zeigt er mir leider immer noch nicht an =( Schreibe es jetzt mal in eine Datei und probiere mal ein wenig rum
|