Posts by Greywolf

    Quote

    Original von sigma7

    Code
    1. mail -s 'subject of the eMail' user@domain.org


    funktioniert ebenfalls, interaktiv. Kann man mail den Inhalt der Nachricht per Parameter oder Datei übergeben so daß mail aus einem Skript genutzt werden kann?


    Sicher ... welche Variante darf's sein?


    Code
    1. echo "mein text" | mail -s "per pipe" user@example.org
    2. mail -s "aus datei" user@example.org < /tmp/meinemail.txt
    3. mail -s "mehrzeiliges HERE-Dokument" user@example.org <<-MAILTEXT
    4. Erste Zeile
    5. Zweite Zeile
    6. Dritte Zeile
    7. MAILTEXT


    :D


    Quote

    sSMTP ersetzt leider exim4 ...


    Na wenn Du schon einen vollwertigen MTA drauf hast, ist dieser eh die bessere Lösung. :)

    Bei permanenter Internet-Verbindung könntest Du es zum Beispiel mit sSMTP probieren. Würde ich aber trotzdem eigentlich nur im LAN empfehlen, denn wenn die Mail nicht sofort verschickt werden kann gibt's 'ne Fehlermeldung und die Mail geht gar nicht raus.


    Sicherer ist ein richtiger MTA wie postfix, der Mails erstmal entgegen nimmt und es bei Zustellproblemen (Internetverbindung weg, SMTP-Server nicht erreichbar) von alleine später nochmal versucht. Bei postfix benötigt solch eine Konfiguration auch nur ein paar Zeilen.

    Nicht im BIOS, im Linux Kernel. IO-APIC kann man daran erkennen, dass "cat /proc/interrupts" Zeilen mit "IO-APIC" auflistet (ohne IO-APIC steht in der dritten Spalte überall "XT-PIC". Local APIC weiß ich so auch nicht ... in /proc/.config, falls der Kernel mit Support dafür übersetzt wurde.

    Schau mal, ob im Kernel "Local APIC support on uniprocessors" oder "IO-APIC support on uniprocessors" aktiviert sind und deaktiviere diese gegebenenfalls. Eine der beiden Optionen war es glaube ich vor einiger Zeit, mit denen ich Probleme auf einem IBM NetVista (Modellnummer weiß ich nicht mehr) hatte: der Rechner lief mehr oder eher weniger lange normal, bis er irgendwann seeeeeehr trääääääge wurde. Irgendwie geriet da wohl der Timer durcheinander (zu erkennen an der Systemuhr, die für eine Sekunde mehrere Sekunden brauchte).

    Quote

    Original von blehnert
    danke an alle, jedoch ist meine ursprüngliche frage bisher nicht beantwortet.


    sicherlich gibt es foren/workgroups wo meine frage besser aufgehoben wäre. hier (bei meiner frage) allerdings, geht es nicht um prof. einsatz, sondern nur um die funktion "dmz" eines billigst-routers.


    Deaktiviere die "DMZ" (richtiger Begriff wäre wie schon gesagt "Exposed Host") und leite nur die benötigten Ports einzeln per Portforwarding an den gewünschten Rechner weiter ...

    Quote

    Original von sigiberlin
    Problem ist: auch wenn ich 100 angebe, kommts zu dem Timeout ...


    Das "sleep" hinter dem svdrpsend.pl ist nutzlos, da es erst ausgeführt wird, wenn svdrpsend bereits fertig ist und die Verbindung getrennt hat. Der Trick klappt so nur mit der bash Lösung.


    Das dürfte aber eigentlich eh nicht das Problem sein, da svdrpsend (im Unterschied zu meiner bash Variante) die Antwort auf jeden Befehl brav auslesen sollte und nicht nach dem Senden der Befehle sofort trennt. Mehr kann ich momentan nicht weiterhelfen, da mein VDR "außer Reichweite" ist...

    Quote

    Original von uzer

    Code
    1. if ($sContent =~ /Genre.*\n(.*)(mehr...)/) {
    2. $genre = $1;
    3. if ($genre =~ /<a href=.*">(.*)<\/a>/) {
    4. print "$1";
    5. }


    damit gibt er mir "Family" aus obwohl das der letzte genre in der Liste ist (Comedy / Animation / Family) !??? Das heißt die anderen parsed er wohl, aber gibt sie nicht aus :(


    (Ohne mir die Quellseite jetzt näher angeschaut zu haben ...)


    Du weißt bzw. hast bedacht, dass .* "greedy" ist? Das bedeutet, es "nimmt" sich so viele Zeichen wie möglich. Beispiel: "a.*a" matched bei "ababa" auf den kompletten String, nicht nur auf "aba".


    Verwende mal ".*?" stattdessen oder versuche noch spezifischer zu sein (z.B. eventuell "[^>]*" statt ".*", um nur die Parameter von HTML-Tags zu erwischen und nicht über das ">" hinauszugehen)


    (Zu "greedy" siehe auch "man perlre")


    Quote

    Dann wäre hier noch dieses Beispiel mit dem "global" flag, damit müsste man das doch eigentlich lösen können:

    Code
    1. #!/usr/local/bin/perl -w
    2. $t = "-ab-cd-";
    3. foreach($t =~ /-[a-z][a-z]-/g) { print "$_ " }


    aber hier wird dann "-ab-" ausgegeben, aber ich dachte gerade durch das /g flag müsste -ab-cd- ausgegeben werden !??


    Nach dem ersten Treffer ("-ab-") wird HINTER selbigem weitergesucht, also ab dem "c"! Daher erhältst Du keinen weiteren Treffer.


    Mit "Extended Patterns" (siehe ebenfalls "man perlre") kann man Ausdrücke definieren, die auf Zeichen matchen, diese aber nicht in das Ergebnis mit einbeziehen. Aber auch damit fällt mir spontan keine Lösung ein, die das gewünscht Ergebnis produziert.


    Liefert an der Stelle nicht vielleicht auch ein split(/-/,$t) die gewünschten Daten?

    Klappt auch nur mit der bash:

    Code
    1. ( echo -e "mesg Hallo :-)\\nquit" ; sleep 1 ) >/dev/tcp/localhost/2001


    :D


    Ohne das "sleep 1" bekomme ich im Syslog ein "ERROR (svdrp.c,405): Broken pipe" ... da scheint die bash wohl zu schnell wieder zu trennen?


    ("/dev/tcp/..." ist übrigens kein echtes Device sondern wird von der bash gesondert behandelt)

    Quote

    Original von cooper
    Apropos Seriennummer: Man kann natürlich irgend welche Receiver kaufen gehen, um an eine ran zu kommen. Oder man besucht einfach mit Zettel und Stift den nächsten Jupiter- oder Mädchenmarkt -- die haben so viele Receiver da rum stehen, dass sie sie sogar verkaufen müssen. Und da kann man sich ja mal einen näher ansehen...


    Wird von der c't nicht empfohlen: http://www.heise.de/ct/06/14/196/ (Frage 3: "Kein Abo ohne Seriennummer")

    Quote

    Original von Wicky
    ...danke :D Die Zeile scheint perfekt zu funktionieren.


    Schön :)


    Eine Optimierung fällt mir aber gerade noch auf:

    Code
    1. sed '/^\s*#/!{/\(adv717x\|bt865\|em8300\)/s/\(.*\)/#\1/}'


    sed kennt "\s" und das "^.*" ist überflüssig ... und mit "extended regular expressions" lassen sich noch ein paar "\" einsparen:

    Code
    1. sed -r '/^\s*#/!{/(adv717x|bt865|em8300)/s/(.*)/#\1/}'


    Quote


    Zwei Fragen an dich/an alle:


    1. Musst du, wenn du eine solche Zeile entwickelst noch lange darüber nachdenken?


    Die regulären Ausdrücke gehen meist relativ schnell (wenn auch nicht sofort optimal, wie man sieht ;)), aber die sed-Syntax musste ich nachschauen und ausprobieren. sed habe ich bisher auch nur für ganz einfache Suchen & Ersetzen Aktionen verwendet. Muss ich mir aber auch mal bei Gelegenheit näher anschauen, da ist wie man sieht noch einiges an Potential drin. ;)


    Quote


    2. Mein Bash-Buch ist leider bzgl. sed viel zu kurz geraten. Kannst du ein Buch oder eine Online-Quelle nennen, die meine mangelhaften sed-Kenntnisse beheben könnten? (Es ärgert mich doch mitterweile sehr, dass ich noch ein ziemlicher sed-dumm-user bin. ?(


    Hast Du die Doku zu sed installiert? "man sed" haut einem nur die ganzen Parameter um die Ohren, aber über "info sed" bekommt man auch mal ein paar Beispiele.