Zum Inhalt springen

starbuck86

Mitglieder
  • Gesamte Inhalte

    39
  • Benutzer seit

  • Letzter Besuch

Beiträge von starbuck86

  1. Hi,

    grenze doch mal den Fehler ein. Wie debuggst du normalerweise? Schreibst du 500 Zeilen und überprüfst dann ob es geht oder nicht? Ich glaub nicht, dass dir hier jemand den ganzen Wust debuggt.

    Ausserdem ist die Linien-Angabe nur ein Anhaltspunkt. Wenn du irgendwo ne Klammer vergessen hast zu öffnen, dann kann das auch irgendwo in einer anderen Zeile sein.

    ciao,

    vic

    Vic Deine Antwort war jetzt echt fürn A****, hat mich ehrlich gesagt 0 weitergebracht.

    Natürlich soll mir das hier keiner debuggen, ich will ja selbst wissen was ich falsch gemacht habe. Das steht da nur alles um den Context zu haben.

    Zum Thema Fehler eingrenzen.

    Der Fehler liegt in dieser Routine. Wenn ich se_output auskommentiere läuft das Skript einwandfrei. Also ist es wohl dieser Bereich, der nicht so ganz will.

    Hauptsächlich ging es mir um diese Fragestellung:

    Aber was mache ich bei Definition/Aufruf der Arrays mit einer fortlaufenden Variable im Namen falsch?

    Ich werds jetzt mal über die String-Verbindung mit dem . probieren. Allerdings ist mir die GENAUE Syntax nicht so klar, deswegen frage ich ja hier nach. sh. Zitat.

    Ich meine klar:

    $a="Hal";
    
    $b="lo";
    
    $hallo=$a.$b;

    Aber es handelt sich hier ja um den Spezialfall, dass das $hallo, dann kein String ist, den ich einfach nur ausgeben will, sondern der Name eines Arrays.

  2. Hallo Com.

    Ich hab mal wieder ein kleines Problem, das ich mit diverser Fachliteratur ohne Anhaltspunkt nicht loesen kann.

    Vielleicht koennt ihr mir helfen?!

    Eine Subroutine in meinem Script sieht wie folgt aus:

    
        79  sub se_output {
    
        80
    
        81     #AUsgabe aller PODs einer SE
    
        82
    
        83     my $msc="$_[0]";
    
        84     open(PODTREE, "/XXX/report/seclist_podtree")
    
        85        or die "ERROR: seclist_podtree nicht gefunden. DO: seclist -update";
    
        86     my @podtree=<PODTREE>;
    
        87     close(PODTREE);
    
        88     my @setree=grep /$msc/,@podtree;
    
        89     my $zaehler=1;
    
        90     foreach my $i (@setree) {
    
        91        my @{"splitted$zaehler"} = split(/:/,$i);
    
        92        $zaehler++;
    
        93     }
    
        94     for (my $s=1;$s <= $zaehler;$s++)
    
        95     {
    
        96        print "\n   Datenfiles ($msc): /YYY/${"splitted$s\[2\]"}\n";
    
        97        for (my $zz=1;$zz<=$termsz;$zz++) {
    
        98           print "*";
    
        99        }
    
       100        qx(rsh priv$msc -l f223 "/XXX/scripts/seclist_ext ${"splitted$s\[2\]"} $msc");
    
       101        open(DPOUT,"/XXXreport/seclist_$msc\_${"splitted$s\[2\]"}\_tmp");
    
       102        while(defined(my $i = <DPOUT>)) {
    
       103           print $i;
    
       104        }
    
       105        close(DPOUT);
    
       106        unlink("/XXX/report/seclist_$msc\_${"splitted$s\[2\]"}\_tmp");
    
       107        for (my $zz=1;$zz<=$termsz;$zz++) {
    
       108           print "*";
    
       109        }
    
       110     }
    
       111  }
    
       112
    
       113
    
       114
    
       115  sub create_sfrtree {
    
       116
    
       117     #Quelltext zur Erstellung eines
    
    
    Fuer die Routine ist noch kein Aufrufszenario im Hauptteil des Skripts programmiert. Es existiert bisther nur die Methodendefinition. Wenn ich das Skript jetzt aufrufe schaut sich ja der Compiler den ganzen Quelltext an und findet in dieser Routine diverse Fehler:
    
    <HOSTNAME>:-::/XXX/scripts > seclist
    
    Bareword found where operator expected at seclist line 114, near ""/XXX/report/seclist_$msc\_${"splitted"
    
            (Missing operator before splitted?)
    
    Backslash found where operator expected at seclist line 114, near "$s\"
    
            (Missing operator before \?)
    
    Backslash found where operator expected at seclist line 114, near "2\"
    
            (Missing operator before \?)
    
    String found where operator expected at seclist line 114, near "]"}\_tmp""
    
            (Missing operator before "}\_tmp"?)
    
    Bareword found where operator expected at seclist line 105, near ""/XXX/report/seclist_$msc\_${"splitted"
    
            (Missing operator before splitted?)
    
    Backslash found where operator expected at seclist line 105, near "$s\"
    
            (Missing operator before \?)
    
    Backslash found where operator expected at seclist line 105, near "2\"
    
            (Missing operator before \?)
    
    String found where operator expected at seclist line 105, near "]"}\_tmp""
    
            (Missing operator before "}\_tmp"?)
    
    Global symbol "$termsz" requires explicit package name at seclist line 97.
    
    Global symbol "$termsz" requires explicit package name at seclist line 115.
    
    syntax error at seclist line 114, near ""/XXX/report/seclist_$msc\_${"splitted"
    
    syntax error at seclist line 105, near ""/XXX/report/seclist_$msc\_${"splitted"
    
    Execution of seclist aborted due to compilation errors.
    
    
    Der Fehler mit $termsz ist mir klar, da fehlt die Variablendefinition. Also:
    
    my $termsz=qx(/usr/bin/tput cols);
    
    

    Aber was mache ich bei Definition/Aufruf der Arrays mit einer fortlaufenden Variable im Namen falsch?

    Und: Fehler in Zeile 114. Die Zeile ist leer?!?!

    Danke im Vorraus && Gruss

    starbuck

  3. Hallo Community.

    Ich habe mal wieder ein kleines Problem an dem ich nicht weiterkomme.

    Und zwar hab ich jetzt ein Programm geschrieben, mit verschiedenen Subroutinen, die alle lokal ausgeführt werden können.

    Das ganze schaut dann in etwa so aus:

    
    #!/usr/bin/perl
    
    if ($ARGV[0] eq "intern") { pfad() }
    
    elsif ($ARGV[0] eq "extern") {
    
       qx(rsh server10 -l toor "    ???    ");
    
    }
    
    
    sub pfad {
    
       qx(echo $PATH);
    
    }
    
    

    Wie mache ich das jetzt, dass ich die Routine auf dem entfernten Rechner ausführe, ohne eine neue Perl-Datei in einem Verzeichnis auf dem Server anzulegen, welche diese Routine beinhaltet??

    Kann ich diese Routine irgendwie mitgeben?

    Vielen Dank im Vorraus && Gruß

    starbuck11

  4. Danke. Das war das was ich gesucht habe.

    Nachdem Aufteilen mit split kann ich ja sec99 abfragen durch.

    $secnr=$Woerter[2];

    Gruß

    ********************************************************

    Das habe ich jetzt nicht ganz verstanden:

    while($Satz =~ /$Suchwort/g) {

    push(@Positionen, pos($Satz));

    }

    Das ist doch eine Endlosschleife?

    Was macht das "../g) {.."?

    Oder heisst das, wenn ich einen String suche in meinem Satz, den dann einem Array zuzuweisen?

    ja mit substr habe ich schon gearbeitet.

    Left / right sind mir noch neu.

    Gruß

    starbuck

  5. Hallo zusammen.

    Gestern bash heute perl. Abwechslung muss sein. :-)

    Zu meinem Problem:

    Ich würde gerne in Perl ein Skript schreiben, mit dem ich aus einem String etwas herausziehen kann.

    Der gewöhnliche String sieht so aus:

    dgene:dnt:sec99:ee20:1:p-dnt:beta:

    Nun möchte ich zum Beispiel den String nach dem 2. Doppelpunkt (also sec99) extrahieren.

    Wie geht man so etwas an?

    Kann mir da jemand etwas helfen?

    Danke && Gruß

    starbuck

  6. Jop hat funktioniert. Hatte vorhin n Fehler drin, sodass er mir die backslash escapes nicht erkannt hat.

    Danke noch mal für den Denkanstoss, vic:

    Lösung war folgende:

    ****************

    
    #!/bin/bash
    
    tput civis
    
    terml=`tput lines`
    
    sterml=`expr $terml - 1`
    
    for i in Hello Hallo Welcome Bonjour Salve Servus ; do
    
       echo -e "\e[${sterml};1H"
    
       echo -en $i
    
       echo -e "\e[${sterml};1H"
    
       sleep 2
    
       echo -en "\e[J"
    
    done
    
    tput cvvis
    
    exit 0
    
    

    Gruß

    starbuck

  7. Hallo zusammen.

    Ich bin gerade leicht am verzweifeln.. zu meinem Problem:

    Ich schreibe seit einiger zeit Shell-Skripte und kenne noch nicht alle Möglichkeiten, die ein Shell-Skript mir bietet.

    Und zwar geht es um mein aktuelles Projekt.

    Ich habe ein Skript geschrieben, dass auf verschiedenen Servern verschiedene Informationen abruft und auf dem Bildschirm ausgibt. Um es genauer zu sagen, es sind bis zu 200 verschiedene Informationspakete, die am Host-Rechner eintreffen.

    Um dem User dieses Skripts einen Status zu geben, wie weit es ist hab ich eine einfach echo-Ausgabe pro Informationspaket.

    Also sieht meine Ausgabe so aus:

    
    >> /server1/pfad/fcb
    
    >> /server2/pfad/fcb
    
    >> /server3/pfad/fcb
    
    ...
    
    >> /server200/pfad/fcb
    
    
    Da mir dies aber zu viel Platz auf dem Bildschirm verbraucht, möchte ich nun, dass die echo-Ausgaben sich gegenseitig überschreiben. Also, dass sobald das neue Informationspaket eingetroffen ist, die aktuelle Echo-Ausgabe auf dem Bildschirm durch eine neue ersetzt wird, sodass ich nur 1 Zeile für den Status benötige. Jetzt ist die Frage, wie man das realisiert. Ich habe versucht das ganze über ANSI-Escape-Sequenzen zu lösen. Hier mal ein einfaches Beispiel:
    
    #!/bin/sh
    
    for i in Hello Bonjour Welcome Hallo ; do
    
       echo -en $i
    
       sleep 2
    
       echo -en "\e[J" # laut meinem Script sollte dieser ANSI-Code 
    
                            # die aktuelle Zeile auf dem Bildschirm löschen
    
    done
    
    exit 0
    
    

    Allerdings hat das nicht funktioniert, wie ich mir das vorgestellt hatte. Der besagte Befehl hatte meines Erachtens nach keine Wirkung gezeigt - auch keine anderweitige Wirkung.

    Wo ist mein Fehler - oder wie kann man das lösen?

    INFO:: Ich benutze zur Shell-Programmierung ein SUN Solaris 10 System.

    Gruß und vorzeitig vielen Danke für die Antworten

    starbuck

  8. Hallo zusammen.

    Ich vergnüge mich derweil mit der Implementation von:

    Apache 2.2.4 + mod_jk 1.2.23 + Tomcat 6.0.13

    Habe alles erfolgreich eingestellt und konfiguriert. Es sieht folgendermaßen aus:

    Es existieren 2 reale Server (leider nur Scenic xL Rechner von vor einiger Zeit) worauf jeweils 1 Tomcat, 1 Apache und mod_jk in der oben genannten Version installiert ist. Die Weiterleitung von mod_jk an die AppServer erfolgt über Loadbalancing. Das Verfahren ist momentan noch irrelevant.

    Viel wichtiger ist mir nun, eine Methode zu finden, mit einem Benchmarktool wie JMeter (Apache Foundation) eine Last auf den Konnektor auszuüben (Sessions, Anfragen erzeugen) und hinterher auszuwerten.

    Das Ergebnis soll mir

    a) Latenzzeit

    B) Server, der die Anfrage bearbeitet hat (also welcher Tomcat-Server)

    liefern.

    Kann mir da jemand weiterhelfen?? Leider komme ich mit JMeter nicht so recht klar und die Ergebnisausgabe ist mir viel zu ungenau. Jetzt msuche ich nach anderen Lösungen. Die Zeit drängt. DeadLine ist Freitag Dienstschluss.

    Vielen Dank schon mal im Vorraus!

    gruss Thomas

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...