Perl script to create a separte log file that includes required info.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Vallabh
    New Member
    • Sep 2008
    • 5

    Perl script to create a separte log file that includes required info.

    I want to create a separate log that includes an I (logIN) , userid, and date/timestamp from a detailed log. This type of data compresses very well so I can store years of it. I need script to create an separate log files that can saved on each server. Since I dont know much about perl scripting. Your help will be appreciated.

    Thanx

    Val
  • numberwhun
    Recognized Expert Moderator Specialist
    • May 2007
    • 3467

    #2
    And what have you tried to do this? Why not try to do it if you haven't and post your code here if you get stuck.

    Regards,

    Jeff

    Comment

    • Vallabh
      New Member
      • Sep 2008
      • 5

      #3
      Originally posted by numberwhun
      And what have you tried to do this? Why not try to do it if you haven't and post your code here if you get stuck.

      Regards,

      Jeff

      I tried by using chomp and split function..but I am not able to do.
      following is my code...
      Code:
      #!/usr/bin/perl -w
      $open_FILE="filename";
      $output_file="newfile";
      open (FH, "<$open_FILE");
      @content=<FH>;
      close(FH);
      open(FD, "> $output_file");
      @params=$_;
      foreach $line (@content)
      {
      chomp ($line);
      $params = split(/ /, $line); 
      
      }
      i am totally new to perl script..

      I m not getting any output from my code...please do help me ..its urgent.
      Last edited by eWish; Oct 3 '08, 08:33 PM. Reason: Please use the [code][/code] tags

      Comment

      • KevinADC
        Recognized Expert Specialist
        • Jan 2007
        • 4092

        #4
        Code:
        foreach $line (@content)
        {
        chomp ($line);
        @params = split(/ /, $line);
        print FD "@params\n";
        }
        See if that helps at least get some data into the file. You can worry about formatting after you get this working.

        Use code tags otherwise Jeff is going to give you a well deserved tongue lashing ;)

        Comment

        • eWish
          Recognized Expert Contributor
          • Jul 2007
          • 973

          #5
          @Vallabh, Please do use the tags when posting code samples. Thanks.

          Originally posted by KevinADC
          Use code tags otherwise Jeff is going to give you a well deserved tongue lashing ;)
          Jeff must need more fiber in his diet either that or he is trying to get to 2000 posts. :) I better run quick before he sees me here.


          --Kevin

          Comment

          • maestria
            New Member
            • Oct 2008
            • 4

            #6
            Post the sample of logs/data that is there in "filename".
            Here you are merely splitting the files on a space.

            Comment

            • Vallabh
              New Member
              • Sep 2008
              • 5

              #7
              Originally posted by maestria
              Post the sample of logs/data that is there in "filename".
              Here you are merely splitting the files on a space.


              Hello friends,

              I first of all i did grep in unix and append the to a new file <newlog.log>. Then in perl i created a code..as follow

              Code:
              $LOGFILE = "/opt/app/siteminder/log/newlog1.log";
              open(LOGFILE) or die("Could not open log file.");
              foreach $line (<LOGFILE>) {
                  $w = "(.+?)";
                  $line =~ m/^$w $w \[$w:$w $w\] " $w"/;
              
                  $Event     = $1;
                  $servername  = $2;
                  $date = $3;
                  $time     = $4;
                  $gmt     = $5;
                  $uid      = $6;
              print ("\t","\n","\t", $Event, $date, $time, $uid);
              
                  # do line-by-line processing.
              }
              close(LOGFILE);
              and also I am getting O/p

              but problem is that I did grep and created new file manually... now I want to do through perl....since we have 8 servers and also there many log previously created on each server. so please help me further.......
              Last edited by eWish; Oct 6 '08, 09:02 PM. Reason: Please use code tags

              Comment

              • KevinADC
                Recognized Expert Specialist
                • Jan 2007
                • 4092

                #8
                Originally posted by Vallabh
                Hello friends,

                I first of all i did grep in unix and append the to a new file <newlog.log>. Then in perl i created a code..as follow


                $LOGFILE = "/opt/app/siteminder/log/newlog1.log";
                open(LOGFILE) or die("Could not open log file.");
                foreach $line (<LOGFILE>) {
                $w = "(.+?)";
                $line =~ m/^$w $w \[$w:$w $w\] " $w"/;

                $Event = $1;
                $servername = $2;
                $date = $3;
                $time = $4;
                $gmt = $5;
                $uid = $6;
                print ("\t","\n","\t" , $Event, $date, $time, $uid);

                # do line-by-line processing.
                }
                close(LOGFILE);

                and also I am getting O/p

                but problem is that I did grep and created new file manually... now I want to do through perl....since we have 8 servers and also there many log previously created on each server. so please help me further.......
                Help you with what? You have not asked a question anyone can help you with. Why didn't you post a sample of the file like you were asked to?

                Comment

                • Vallabh
                  New Member
                  • Sep 2008
                  • 5

                  #9
                  Originally posted by KevinADC
                  Help you with what? You have not asked a question anyone can help you with. Why didn't you post a sample of the file like you were asked to?
                  I want my log file to be look like this.

                  Event timestamp UserID
                  I 27/Aug/200823:06:23 uid=PTL1002

                  I if auth is accepted
                  Oif rejected.


                  I m getting the output but I did grep function manually in UNIX. I want to do grep function is perl so that all process can be automatic

                  Comment

                  • numberwhun
                    Recognized Expert Moderator Specialist
                    • May 2007
                    • 3467

                    #10
                    Originally posted by Vallabh
                    I want my log file to be look like this.

                    Event timestamp UserID
                    I 27/Aug/200823:06:23 uid=PTL1002

                    I if auth is accepted
                    Oif rejected.


                    I m getting the output but I did grep function manually in UNIX. I want to do grep function is perl so that all process can be automatic
                    Ok, then you can either initiate the same grep function using either backtics or the system() function, or, see if Perl's grep function will work for you.

                    Regards,

                    Jeff

                    Comment

                    • KevinADC
                      Recognized Expert Specialist
                      • Jan 2007
                      • 4092

                      #11
                      Originally posted by Vallabh
                      I want my log file to be look like this.

                      Event timestamp UserID
                      I 27/Aug/200823:06:23 uid=PTL1002

                      I if auth is accepted
                      Oif rejected.


                      I m getting the output but I did grep function manually in UNIX. I want to do grep function is perl so that all process can be automatic
                      What does the input file look like?

                      Maybe English is not your first language, but your English grammar and spellling is not good and is making it difficult to understand you. Try to use good spelling and grammar as much as you can.

                      Comment

                      • Vallabh
                        New Member
                        • Sep 2008
                        • 5

                        #12
                        Originally posted by KevinADC
                        What does the input file look like?

                        Maybe English is not your first language, but your English grammar and spellling is not good and is making it difficult to understand you. Try to use good spelling and grammar as much as you can.
                        thanx for help kevin....but I dont know why you are not getting my point.....anywa ys Input looks like this
                        AuthAccept bos54637 [01/Oct/2008:22:46:15 -0500] "90.168.25. 34 cn=region2,ou=A ccounts,o=wirel ess.com" "leasereplaceme nt GET /XNGALL
                        " [idletime=3600;m axtime=7200;aut hlevel=5;] [0] [] []

                        If you need more tell me...

                        Comment

                        • KevinADC
                          Recognized Expert Specialist
                          • Jan 2007
                          • 4092

                          #13
                          Originally posted by Vallabh
                          thanx for help kevin....but I dont know why you are not getting my point.....anywa ys Input looks like this
                          AuthAccept bos54637 [01/Oct/2008:22:46:15 -0500] "90.168.25. 34 cn=region2,ou=A ccounts,o=wirel ess.com" "leasereplaceme nt GET /XNGALL
                          " [idletime=3600;m axtime=7200;aut hlevel=5;] [0] [] []

                          If you need more tell me...
                          OK, now earlier you posted this:

                          Code:
                          $Event = $1;
                          $servername = $2;
                          $date = $3;
                          $time = $4;
                          $gmt = $5;
                          $uid = $6;
                          Now show me from the line you posted what each of those should be from the line you posted:

                          Code:
                          $Event = AuthAccept
                          $servername = bos54637
                          $date = 01/Oct/2008
                          $time = 22:46:15
                          $gmt = -0500
                          $uid = ????

                          Comment

                          Working...