Anzeige:
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 15 von 36

Thema: Script im Hintergrund

  1. #1
    Frank B
    Gast

    Post Script im Hintergrund

    hallo, ich würde gerne folgendes Script im Hintergrund laufen lassen können, was bis jetzt nicht geht. Sonst funktioniert es.

    Danke Frank

    Code:
    #!/usr/bin/expect -f
    #if {[fork]!=0} exit
    #disconnect
    spawn -noecho tail -n 0 -f /var/log/messages
    while "1" {
        expect {
            "####P O R T   S C A N####" {
                send_user "[timestamp -format %c] portscan started \n"
                if {[catch {exec /root/portscann} error]} {
                    send_user "[timestamp -format %c] $error \n"
                } else {
                    send_user "[timestamp -format %c] portscan finished \n"
                }
            }
        }
    }
    [ 12. September 2001: Beitrag editiert von: Frank ]

  2. #2
    Senior Mitglied
    Registriert seit
    23.08.1999
    Beiträge
    132

    Post

    Hi,

    nohup deinscript &

    Gruß
    fork

  3. #3
    Frank B
    Gast

    Post

    habs probiert und dann isses so wie immer, wenn ich strg+c drücke (muss ich ja um weiter auf er Komanndozeile arbeiten zu können) beendet sich das Script

    [root@Frankux root]# nohup deinscript & ./portdetect
    [1] 4798
    nohup: appending output to `nohup.out'
    [1]+ Exit 127 nohup deinscript

    --
    Frank

    [ 12. September 2001: Beitrag editiert von: Frank ]

  4. #4
    Registrierter Benutzer
    Registriert seit
    12.04.2001
    Beiträge
    68

    Post

    wieso Strg C ? wenn was mit & gestartet wurde kannst du normal weiterarbeiten.

    Strg c beendet ein script
    Strg z setzt die shell in den vordergrund
    "bg" schickt die dadurch pausierten prozesse in den hintergrund
    befehl& startet befehl und schickt es sofort in den hintergrund.

    alle im hintergrund befindlichen prozesse geben ihren output trotzdem weiterhin auf die shell aus, was diese dadurch aber nicht blockiert.

  5. #5
    Frank B
    Gast

    Post

    Das ist schon richtig ... nur wenn ich mich auslogge beendet sich der Process dann auch.
    Ich möchte schlicht nichts weiter erreichen als das dieses Script schon beim booten gestartet wird und im Hintergrund läuft.

    Mit strg+z und bg läuft das leider nicht.


    --
    Frank

  6. #6
    Registrierter Benutzer
    Registriert seit
    12.04.2001
    Beiträge
    68

    Exclamation

    das hattest du vergessen zu erwaehnen.
    strg z und bg macht man ja nur, wenn man im nachhinein den letzten befehl auf der shell lieber mit & starten wollte.

    also du traegst in /sbin/init.d/boot.local dein script mit & ein. wenn du was anderes als suse hast musst du erstmal dein bootscript suchen.

  7. #7
    Frank B
    Gast

    Post

    wieso versteht mich denn keiner *heul

    wie man Sachen per booten startet ist doch klar, hier geht es um die Funktionalität an sich erst ma.


    Dank Frank

  8. #8
    wer_ner
    Gast

    Post

    Hi,

    willst Du, daß Dein Script als Dienst im Hintergrund läuft?

    Dies sieht mit der while-Schleife so aus, bin aber leider noch kein Scriptfachmann.

    Dein Problem verstehe ansonsten eigentlich auch nicht (sorry). Wenn es laufen soll ohne das es durh Ausloggen unterbrochen wird, kannst Du es doch nur beim Booten oder z.B durch den Cron starten lassen, oder?

    Nebenbei, was macht das Scirpt eigentlich?

    Grüße,
    Werner

  9. #9
    Frank B
    Gast

    Post

    Moin

    es überwacht das Syslog auf neue Zeilen wo Portscan drin vorkommt. Die Zeilen selber erzeugt ne Logfunktion von Iptables.

    also wenn ich ./portdetect mache passiert nichts weiter als es läuft aber die Bashzeile sich genauso verhält als wenn ich ein tail -f /var....messages mache was ich ja auch nur mit strg+c beenden kann

    --
    Frank

  10. #10
    Registrierter Benutzer
    Registriert seit
    04.05.2001
    Ort
    Köthen
    Beiträge
    33

    Post

    hi,
    ich verstehe, was du meinst. ich habe mir hier auch ein script geschrieben, welches ca. 15 mins läuft.
    und ich kann es leider nicht in den hintergrund schicken, es wird immer terminiert. aber irgendwie muss das gehen, hat denn niemand ne lösung ?

    mfg
    matze

  11. #11
    wer_ner
    Gast

    Post

    Hi,
    hier ungetestet ein Vorschlag für solch einen Dienst. Allerdings als ksh-script :-)

    #!/bin/ksh
    while true
    do
    .... (Dein Script)
    sleep 100
    done

    Das ergibt eine Endlosschleife.

    Mit einem anderen Script vielleicht noch die existens überprüfen und das könnte es sein, oder?

    Grüße,
    Werner

  12. #12
    Frank B
    Gast

    Post

    Macht erstma nen guten Eindruck, nur beschwert er sich über

    syntax error at line 14: `}' unexpected

    habs so eingetragen

    Code:
    #!/bin/ksh93
    while true
    do
    #!/usr/bin/expect -f
    #if {[fork]!=0} exit
    #disconnect
    spawn -noecho tail  -n 0 -f /var/log/messages
    while "1" {
        expect {
            "####P O R T   S C A N####" {
                send_user "[timestamp -format %c] portscan started \n"
                if {[catch {exec /root/portscann} error]} {
                    send_user "[timestamp -format %c] $error \n"
                } else {
                    send_user "[timestamp -format %c] portscan finished \n"
                }
            }
        }
    }
    sleep 100
    done

  13. #13
    Senior Mitglied
    Registriert seit
    23.08.1999
    Beiträge
    132

    Post

    Hi Frank,

    jetzt schmeisst Du aber boes was durcheinander. das was du als erstes geschickt hast war ein script das mit einem expect-Interpreter verarbeitet wird. Das kannst du nicht einfach der ksh(auch ein Interpreter) hinwerfen.

    Entweder du rufst das expect-Script aus deinem ksh-script auf oder du erweiterst dein expect script mit expect-spezifischen Schleifenbefehlen(danach frag mich bloss nicht)

    Also erstere Methode ist die einfachere:

    Code:
    while :    # Doppelpunkt entspricht true
    do
    myexpectscript
    sleep 100
    done
    Gruß
    fork
    P. S. Du solltest auch mal schauen ob bei Dir expect ueberhaupt installiert ist(rpm -qa | grep -i expect)

    [ 17. September 2001: Beitrag editiert von: fork ]

  14. #14
    Frank B
    Gast

    Post

    Soory eben versteh ich nur Bahnhof ... wie meinste das genau ?

  15. #15
    wer_ner
    Gast

    Post

    Hallo,
    was Frank meint, ist, daß Dein Script nicht in der ksh-umgebung läuft. Es ist deshalb notwendig aus dem "Dienst-Script" das eigentliche "Expect-Script" aufzurufen.
    Du hast also zwei Dateien, die Zweite heißt in seinem Beispiel "myexpectscript".
    Grüße,
    Wernr

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •