You are right. To shorten the output is my main goal:
1. TAI64 time stamp - To allow user select date format. My understanding is that tai64nlocal can only output the lengthy format. So we may need to use some other program to convert the date format? 2. Content replacement - To allow user to predefine wordings for search and replace. 3. Content filtering - Show only lines with / without user-defined wordings Other than that, it's just 2 minor settings to allow user to define: 1. log file location 2. file name(s) Thank you, Eric Best regards, Bill On 11/23/06, Eric Shubes <[EMAIL PROTECTED]> wrote:
I'm glad to see that we're thinking along the same lines. I'm pretty good with bash. Not as good with perl, but I think I can read it well enough to translate what you're doing into bash. I'll have a look at it when I get a chance. It would help me out a bit if you could give me a couple examples of what the script needs to do (from the user standpoint). I'm guessing that shortening the output is all that qmlog might need to do. FWIW, there is a tai64nlocal program included in the daemontools-toaster package that converts the time to a readable format. I'll have to see what you're doing to shorten things, but I'm guessing that sed or cut might fit the bill (no pun intended). Thanks! Bill Kwok wrote: > There are a few Perl modules which I use in the program. You may run > the following to make sure you've got all of them: > > #perl -MCPAN -e shell > cpan> install Getopt::Std > cpan> install Time::TAI64 > cpan> install Time::HiRes > cpan> install File::Tail > cpan> install Cwd > cpan> exit > > I select perl to develop the program only because my knowledge about > bash is not good enough to develop what I want, especially about how to > convert the tai64n string to the format I want and how to shorten the > output message. It will be great if we can perform all these features > by using bash script. At least people don't need to install any > additional perl modules in order to use it. :) > > Best regards, > Bill > > > On 11/22/06, *Bill Kwok* <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>> wrote: > > The module can be installed by: > > # perl -MCPAN -e 'install File::Tail' > > Actually, you may add other required modules by the same way. > > Best regards, > Bill > > On 11/22/06, [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>* < > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote: > > The module was successfully installed but I still get the same > error but > this time is line 7 of the script as opposed to the previous error > occurring at line 5. > > Can't locate File/Tail.pm in @INC > BEGIN failed--compilation aborted at ./qt-showlog line 7. > > > > > Hi, > > > > You may install the required Perl module by the following command: > > > > # *perl -MCPAN -e 'install Time::TAI64'* > > > > > > Best regards, > > Bill > > > > On 11/22/06, [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> < > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote: > >> > >> Bill, > >> > >> I am getting errors when I run your script. I may be missing some > >> modules > >> (I think) bunt don't know how to install them. > >> > >> [EMAIL PROTECTED] ~]# ./qt-showlog -t -s pop3-ssl -i LOGOUT -f > '%y%b%d %H:%M' > >> Can't locate Time/TAI64.pm in @INC (@INC contains: > >> /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi > >> /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi > >> /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi > >> /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi > >> /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi > >> /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi > >> /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 > >> /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 > >> /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 > >> /usr/lib/perl5/site_perl > >> /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi > >> /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi > >> /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi > >> /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi > >> /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi > >> /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi > >> /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 > >> /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 > >> /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 > >> /usr/lib/perl5/vendor_perl > /usr/lib/perl5/5.8.8/i386-linux-thread-multi > >> /usr/lib/perl5/5.8.8 .) at ./qt-showlog line 5. > >> BEGIN failed--compilation aborted at ./qt-showlog line 5. > >> [ [EMAIL PROTECTED] ~]# > >> > >> > >> > >> > >> > Hi all, > >> > > >> > From time to time, we need to read qmail's log files. Since > the time > >> > stamp > >> > returned by tai64nlocal is "too precise" (lengthy), for me, > I've > >> written > >> a > >> > Perl script so that the log file can be displayed in a > customized time > >> > stamp. It also includes few more options: > >> > > >> > # qt-showlog -h > >> > Display qmail log in custom time format > >> > Usage: /root/scripts/qt-showlog [Options] [file name]... > >> > -d <directory> Specify directory location. Default: > >> > /var/log/qmail > >> > -e <Text> Display lines without <Text> > >> > -f <date format> SpecIfy date format to be used. > Default: %b%d > >> > %H:%M:%S > >> > -h Show this message > >> > -i <Text> Display lines with <Text> > >> > -s <Service> Select <Service> log, such as > pop3-ssl and > >> send. > >> > Default: send > >> > -t Display log which is continously > appended to > >> > (similar to tail -f) > >> > [filename] File to be displayed. Default: All > files > >> started > >> > with ' and 'current' > >> > > >> > If -t is selected, only 'current' will be displayed > >> > > >> > For example, the following command shows only the lines > which includes > >> > 'LOGOUT' in the newly appended records of > >> > the /var/log/qmail/pop3-ssl/current file with a yymmmdd > HH:MM time > >> stamp: > >> > > >> > #qt-showlog -t -s pop3-ssl -i LOGOUT -f '%y%b%d %H:%M' > >> > 06Nov16 11:31 INFO: LOGOUT, user=adams, ip=[1.2.3.4 > <http://1.2.3.4/>], top=0, retr=0, > >> > rcvd=24, sent=2614, time=0 > >> > 06Nov16 11:31 INFO: LOGOUT, user=sylvia, ip=[ 1.2.3.4 > <http://1.2.3.4/>], top=0, retr=0, > >> > rcvd=12, sent=39, time=0 > >> > 06Nov16 11:31 INFO: LOGOUT, user=adrian, ip=[4.3.2.1 > <http://4.3.2.1/>], top=0, retr=0, > >> > rcvd=12, sent=39, time=1 > >> > 06Nov16 11:31 INFO: LOGOUT, user=anita, ip=[1.3.5.7 > <http://1.3.5.7/>], top=0, > >> retr=25181, > >> > rcvd=40, sent=25923, time=0 > >> > > >> > > >> > > >> > To further reduce the length of the output, you may want to > edit the > >> > following lines of regex in the script. In my example here, > I replace > >> all > >> > " > >> > mydomain.com <http://mydomain.com/>" with "MD" and etc. > >> > > >> > # comment out the following if you want to show full content > >> > my @items= ( > >> > [ qr/mydomain.com/, "MD" ], > >> > [ > >> > qr/User_and_password_not_set,_continuing_without_authentication./, > >> > "w/o auth" ], > >> > [ qr(Remote_host_said:_250[^/]+), > 'Remote_host_said:_250' ], > >> > ); > >> > > >> > I hope you like it. Please feel free to comment. > >> > > >> > Best regards, > >> > Bill > >> > > --------------------------------------------------------------------- > > >> > QmailToaster hosted by: VR Hosted < http://www.vr.org > <http://www.vr.org/>> > >> > > --------------------------------------------------------------------- -- -Eric 'shubes' --------------------------------------------------------------------- QmailToaster hosted by: VR Hosted <http://www.vr.org> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
