RE: Using bc in bash script
OK, I've been playing with the time command to get the elapsed time of my daily_report script reported in 2 decimal places. If I do: # \time -ha ~/daily.log ~/bin/daily_report (append output of time to ~/daily.log) I get: Time: /root/daily.log permission denied (time output) If I do: # chmod 666 daily.log # \time -ha ~/daily.log ~/bin/daily_report (append output of time to ~/daily.log) I get: Time: /root/daily.log permission denied (time output) If I do: # \time -ho ~/tmp.time ~/bin/daily_report That works OK The problem with all of this is that time must wait for the daily_report script to finish before it writes tmp.time. By then, in it's existing form, daily_report has already mailed daily.log to charles. I'm gonna hafta re-write and re-arrange some things to make this work properly. I don't object to that in principle, but there must be a more elegant way to do this. For reference: -- #!/usr/local/bin/bash # Daily Report # Declare variables start_time=`date +%s` time1=`date +%R` month=`date +%b` day=`date +%e` # Cleanup files if [ -a /root/daily.log ] ; then rm /root/daily.log fi # Main report header echo "Daily Report for Larry for" `date '+%A, %B %d %Y'`"." >> /root/daily.log echo "" >> /root/daily.log echo >> /root/daily.log # OS header echo "Current Operating System" >> /root/daily.log echo "" >> /root/daily.log uname -sr >> /root/daily.log echo >> /root/daily.log # Uptime Header echo "Uptime" >> /root/daily.log echo "" >> /root/daily.log uptime >> /root/daily.log echo >> /root/daily.log # Crontab Header echo "Cron Jobs" >> /root/daily.log echo "" >> /root/daily.log crontab -l >> /root/daily.log echo >> /root/daily.log # Last Header echo "Logins today" >> /root/daily.log echo "" >> /root/daily.log last | grep "$month $day" >> /root/daily.log echo >> /root/daily.log # Superuser Header echo "Accounts with uid = 0 (Superusers)" >> /root/daily.log echo "" >> /root/daily.log awk -F: '( $3 == 0 ) { print $1 }' /etc/passwd >> /root/daily.log echo >> /root/daily.log # /etc/passwd Header echo "Accounts that have a valid shell" >> /root/daily.log echo "" >> /root/daily.log cat /etc/passwd | egrep -v "("nologin"|"uucico"|"\#")" >> /root/daily.log echo >> /root/daily.log # DF Header echo "Disk Free space" >> /root/daily.log echo "" >> /root/daily.log df -h >> /root/daily.log echo >> /root/daily.log # netstat Header echo "Netstat -an results" >> /root/daily.log echo "" >> /root/daily.log netstat -an >> /root/daily.log echo >> /root/daily.log # ifconfig echo "Status of network interfaces" >> /root/daily.log echo "" >> /root/daily.log ifconfig >> /root/daily.log echo >> /root/daily.log # Compute the elapsed time echo "Elapsed Time" >> /root/daily.log echo "" >> /root/daily.log echo "Report completed at:" `date +%R` >> /root/daily.log echo "Report begun at:" $time1 >> /root/daily.log end_time=`date +%s` et=`echo $end_time - $start_time | bc` if [ $et -lt 1 ] ; then echo " Elapsed Time: less than 1 second" >> /root/daily.log else echo " Elapsed Time: " $et "seconds" >> /root/daily.log fi echo >> /root/daily.log # File Modification Date echo "Last modified" >> /root/daily.log echo "" >> /root/daily.log ls -l /root/bin/daily_report | cut -d" " -f9,10,11 >> /root/daily.log # Mail to Chalres cat /root/daily.log | mail -s "Daily Report from Larry" charles ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
On Thu, Aug 14, 2003 at 12:23:34PM -0500, Stephen Hilton wrote: > On Thu, 14 Aug 2003 12:11:55 -0500 > "Charles Howse" <[EMAIL PROTECTED]> wrote: > > > > Charles, > > > > > > This will set bc precision to 5 decimal places: > > > > > > et=`echo "scale=5 ; $end_time - $start_time" | bc` > > > > Ohhh, I was really hoping on that one...but no, it still reports 0 > > seconds. > > > Sorry I jumped the gun there, the scale is needed for this to work > but the "date +%s" willonly resolve into whole seconds after reading > the date man page. > > I sure am curious as to how to solve this also, the /usr/bin/time > command man page says this: > > -snip-- > DESCRIPTION > The time utility executes and times the specified utility. After the > utility finishes, time writes to the standard error stream, (in seconds): > the total time elapsed, the time used to execute the utility process and > the time consumed by system overhead. > -snip-- > > So that looks like seconds only also. The precision is in hundredths of a second as I understand it from playing with time(!): #!/bin/sh time_file=tmp.time time="time -a -o $time_file" $time cat /var/log/messages >/dev/null 2>&1 $time cat /var/log/maillog >/dev/null 2>&1 awk '{sum+=$1}END{print sum}' $time_file rm $time_file which outputs: [18:34:03] [EMAIL PROTECTED] /home/munk# sh tmp.sh 0.01 This simple script just times each cat command and appends the output from time to the $time_file, then prints out the sum of the first columns of the time outputs found in the time file. Just an idea. -- Jez http://www.munk.nu/ ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
RE: Using bc in bash script
> > Can I refine it to give me something like: .784 seconds? > > Use "bc -l" instead of bc. That should do it. No, that still gives 0 seconds. I think this whole thing is dependent on the fact that `date +%s` reports integers. I'm still interested in something like .874 seconds, but for the time being, I'll just use an if..then..else to say "less than 1 second" or the actual number of seconds. I've looked at the time command suggested by Jez, haven't tried it yet. Gzz, why don't they include some *SIMPLE* examples in the man pages? Not everybody has a degree in Advanced Calculus and works as a C++ programmer. ;-) ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
RE: Using bc in bash script
At 11:45 14.08.2003 -0500, Charles Howse wrote: > > Can I refine it to give me something like: .784 seconds? > > Use "bc -l" instead of bc. That should do it. No, that still gives 0 seconds. I think this whole thing is dependent on the fact that `date +%s` reports integers. I'm still interested in something like .874 seconds, but for the time being, I'll just use an if..then..else to say "less than 1 second" or the actual number of seconds. I've looked at the time command suggested by Jez, haven't tried it yet. Note the trap: shell's builtin "time" command differs somewhat from installed "/usr/bin/time"! man time man builtin man Alexander ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
RE: Using bc in bash script
I received this msg a short time ago: Antigen for Exchange found daily_report.sh matching =*.sh file filter. The file is currently Removed. The message, "RE: Using bc in bash script", was sent from Charles Howse and was discovered in IMC Queues\Inbound located at mcglinchey/NewOrleans/NOLA. I hope ANTIGEN_NOLA [EMAIL PROTECTED] is just a server on the way to the freebsd-questions server! It'd be sacrelegious for a FreeBSD list server to run M$ Exchange!!! ;-) If you didn't get my attachment and need it for reference, reply and I'll post it inline. Thanks, Charles ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
At 11:35 14.08.2003 -0500, Kirk Strauser wrote: At 2003-08-14T16:08:21Z, "Charles Howse" <[EMAIL PROTECTED]> writes: > Can I refine it to give me something like: .784 seconds? Use "bc -l" instead of bc. That should do it. Yes, but not in the context mentioned before: > > > Start_time=`date +%s` # Seconds past midnight at start of script > > > [ do lots of stuff ] > > > End_time=`date +%s` # Seconds past midnight at end of script et=`echo "$end_time - $start_time" | bc -l` Here bc -l will not really help, because date +%s returns whole seconds :-( BTW: %s are seconds since epoch Alexander ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
On Thu, Aug 14, 2003 at 10:46:45AM -0500, Charles Howse wrote: > Hello List, > > I've migrated from Redhat Linux 9 to FreeBSD 4.8-RELEASE, character mode > - no gui. > > I'm trying to calculate the number of seconds between $start_time and > $end_time in a bash script. > > Start_time=`date +%s` # Seconds past midnight at start of script > [ do lots of stuff ] > End_time=`date +%s` # Seconds past midnight at end of script > > Then I want to: et=`bc $end_time - $start_time` to get the number of > seconds or fractions of seconds elapsed. How about: et=`echo "$end_time - $start_time" | bc` -- Jez http://www.munk.nu/ ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
On Thu, 14 Aug 2003 11:08:21 -0500 "Charles Howse" <[EMAIL PROTECTED]> wrote: > > On Thu, Aug 14, 2003 at 10:46:45AM -0500, Charles Howse wrote: > > > Hello List, > > > > > > I've migrated from Redhat Linux 9 to FreeBSD 4.8-RELEASE, > > character mode > > > - no gui. > > > > > > I'm trying to calculate the number of seconds between > > $start_time and > > > $end_time in a bash script. > > > > > > Start_time=`date +%s` # Seconds past midnight at start of script > > > [ do lots of stuff ] > > > End_time=`date +%s` # Seconds past midnight at end of script > > > > > > Then I want to: et=`bc $end_time - $start_time` to get the number of > > > seconds or fractions of seconds elapsed. > > How about: > > > > et=`echo "$end_time - $start_time" | bc` > > Hi Jez, thanks for the reply! > > As my daughter would say, "Well, DUHHH!" > That worked fine, it reported 0 seconds. > Can I refine it to give me something like: .784 seconds? Charles, This will set bc precision to 5 decimal places: et=`echo "scale=5 ; $end_time - $start_time" | bc` Regards, Stephen Hilton [EMAIL PROTECTED] ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
RE: Using bc in bash script
> > The precision is in hundredths of a second as I understand it from > > playing with time(!): > > > > #!/bin/sh > > time_file=tmp.time > > time="time -a -o $time_file" > > $time cat /var/log/messages >/dev/null 2>&1 > > $time cat /var/log/maillog >/dev/null 2>&1 > > awk '{sum+=$1}END{print sum}' $time_file > > rm $time_file > > > > which outputs: > > > > [18:34:03] [EMAIL PROTECTED] /home/munk# sh tmp.sh > > 0.01 > > > > This simple script just times each cat command and appends > the output from > > time to the $time_file, then prints out the sum of the > first columns of > > the time outputs found in the time file. > > > > Just an idea. First, let me thank everyone who responded to my *first* post to this list. This seems like a really good 'community', I'm gonna hang around. ;-) Now, I've written many bash scripts in RedHat, and FreeBSD's set of commands *is* just a little bit different, but I'm gonna need a little shove in the right direction here. I'm not asking for anyone to re-write anything for me, just a friendly suggestion as to exactly to implement the 'time' command so that the file that my daily_report script generates includes the elapsed time in hundredths on the proper line. I've attached the script for reference. daily_report.sh Description: Binary data ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
On Thu, 14 Aug 2003 18:34:25 +0100 Jez Hancock <[EMAIL PROTECTED]> wrote: > On Thu, Aug 14, 2003 at 12:23:34PM -0500, Stephen Hilton wrote: > > On Thu, 14 Aug 2003 12:11:55 -0500 > > "Charles Howse" <[EMAIL PROTECTED]> wrote: > > > > > > Charles, > > > > > > > > This will set bc precision to 5 decimal places: > > > > > > > > et=`echo "scale=5 ; $end_time - $start_time" | bc` > > > > > > Ohhh, I was really hoping on that one...but no, it still reports 0 > > > seconds. > > > > > > Sorry I jumped the gun there, the scale is needed for this to work > > but the "date +%s" willonly resolve into whole seconds after reading > > the date man page. > > > > I sure am curious as to how to solve this also, the /usr/bin/time > > command man page says this: > > > > -snip-- > > DESCRIPTION > > The time utility executes and times the specified utility. After the > > utility finishes, time writes to the standard error stream, (in seconds): > > the total time elapsed, the time used to execute the utility process and > > the time consumed by system overhead. > > -snip-- > > > > So that looks like seconds only also. > The precision is in hundredths of a second as I understand it from > playing with time(!): > > #!/bin/sh > time_file=tmp.time > time="time -a -o $time_file" > $time cat /var/log/messages >/dev/null 2>&1 > $time cat /var/log/maillog >/dev/null 2>&1 > awk '{sum+=$1}END{print sum}' $time_file > rm $time_file > > which outputs: > > [18:34:03] [EMAIL PROTECTED] /home/munk# sh tmp.sh > 0.01 > > This simple script just times each cat command and appends the output from > time to the $time_file, then prints out the sum of the first columns of > the time outputs found in the time file. > > Just an idea. > -- Jez, Your shell script works fine for me, resolving to 100th's of a second. Looks like a good answer for Charles :-) I still am wondering why the date command does not have a format string for seconds (down to 100th's) like "+%ss" and also why the time command stops at 100th's when other programs resolve time to 5 or 6 decimal places ? Thanks for sharing the info, Stephen Hilton [EMAIL PROTECTED] ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
At 2003-08-14T16:08:21Z, "Charles Howse" <[EMAIL PROTECTED]> writes: > Can I refine it to give me something like: .784 seconds? Use "bc -l" instead of bc. That should do it. -- Kirk Strauser pgp0.pgp Description: PGP signature
Re: Using bc in bash script
On Thu, 14 Aug 2003 12:11:55 -0500 "Charles Howse" <[EMAIL PROTECTED]> wrote: > > Charles, > > > > This will set bc precision to 5 decimal places: > > > > et=`echo "scale=5 ; $end_time - $start_time" | bc` > > Ohhh, I was really hoping on that one...but no, it still reports 0 > seconds. Sorry I jumped the gun there, the scale is needed for this to work but the "date +%s" willonly resolve into whole seconds after reading the date man page. I sure am curious as to how to solve this also, the /usr/bin/time command man page says this: -snip-- DESCRIPTION The time utility executes and times the specified utility. After the utility finishes, time writes to the standard error stream, (in seconds): the total time elapsed, the time used to execute the utility process and the time consumed by system overhead. -snip-- So that looks like seconds only also. A quick browse through "man sh" and "man bash" look like their builtin time commands also resolve to seconds. Curiousy, Stephen Hilton [EMAIL PROTECTED] ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
On Thu, Aug 14, 2003 at 12:58:01PM -0500 or thereabouts, Stephen Hilton wrote: > On Thu, 14 Aug 2003 18:34:25 +0100 > Jez Hancock <[EMAIL PROTECTED]> wrote: > > > On Thu, Aug 14, 2003 at 12:23:34PM -0500, Stephen Hilton wrote: > > > On Thu, 14 Aug 2003 12:11:55 -0500 > > > "Charles Howse" <[EMAIL PROTECTED]> wrote: > > > > > > > > Charles, > > > > > > > > > > This will set bc precision to 5 decimal places: > > > > > > > > > > et=`echo "scale=5 ; $end_time - $start_time" | bc` > > > > > > > > Ohhh, I was really hoping on that one...but no, it still reports 0 > > > > seconds. > > > > > > > > > Sorry I jumped the gun there, the scale is needed for this to work > > > but the "date +%s" willonly resolve into whole seconds after reading > > > the date man page. > > > > > > I sure am curious as to how to solve this also, the /usr/bin/time > > > command man page says this: > > > > > > -snip-- > > > DESCRIPTION > > > The time utility executes and times the specified utility. After the > > > utility finishes, time writes to the standard error stream, (in seconds): > > > the total time elapsed, the time used to execute the utility process and > > > the time consumed by system overhead. > > > -snip-- > > > > > > So that looks like seconds only also. > > The precision is in hundredths of a second as I understand it from > > playing with time(!): > > > > #!/bin/sh > > time_file=tmp.time > > time="time -a -o $time_file" > > $time cat /var/log/messages >/dev/null 2>&1 > > $time cat /var/log/maillog >/dev/null 2>&1 > > awk '{sum+=$1}END{print sum}' $time_file > > rm $time_file > > > > which outputs: > > > > [18:34:03] [EMAIL PROTECTED] /home/munk# sh tmp.sh > > 0.01 > > > > This simple script just times each cat command and appends the output from > > time to the $time_file, then prints out the sum of the first columns of > > the time outputs found in the time file. > > > > Just an idea. > > -- > > Jez, > > Your shell script works fine for me, resolving to 100th's of a second. > > Looks like a good answer for Charles :-) > > I still am wondering why the date command does not have a format > string for seconds (down to 100th's) like "+%ss" and also why > the time command stops at 100th's when other programs resolve > time to 5 or 6 decimal places ? All the good % things are taken :-) Here are three ways of doing it: % cat > gettimeofday.c <<'EOF' #include #include int main() { struct timeval tv; struct timezone unused; gettimeofday (&tv, &unused); printf ("%li.%li\n", tv.tv_sec, tv.tv_usec); return 0; } EOF % cc -o gettimeofday gettimeofday.c % ./gettimeofday; echo hello, world; ./gettimeofday 1060886109.667054 hello, world 1060886109.687446 % gettimeofday() { > perl -MTime::HiRes=gettimeofday -e '($sec, $usec) = gettimeofday(); print $sec, > ".", $usec, "\n"' > } % gettimeofday; echo hello, world; gettimeofday 1060886661.274900 hello, world 1060886661.313071 % gettimeofday2() { > perl <<'EOF' > $now = pack ("LL", ()); > syscall (116, $now, 0) != 1 or die "gettimeofday: $!"; > @now = unpack ("LL", $now); > print $now[0], ".", $now[1], "\n"; > EOF > } % gettimeofday2; echo hello, world; gettimeofday2 1060887546.767676 hello, world 1060887546.938097 % rm gettimeofday gettimeofday.c % unset gettimeofday % unset gettimeofday2 The first one (the C program) works anywhere but you have to compile it. The second one (perl -MTime::HiRes...) works if you have either Time::HiRes from CPAN or perl>=5.8. The third one (perl ... syscall 116 ...) is specific to FreeBSD/i386 and a bit slower, but it works. HTH -- Josh > > Thanks for sharing the info, > > Stephen Hilton > [EMAIL PROTECTED] > ___ > [EMAIL PROTECTED] mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "[EMAIL PROTECTED]" ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
At 2003-08-14T17:58:01Z, Stephen Hilton <[EMAIL PROTECTED]> writes: > I still am wondering why the date command does not have a format string > for seconds (down to 100th's) like "+%ss" and also why the time command > stops at 100th's when other programs resolve time to 5 or 6 decimal places? My guess is that its margin of error, given the nondeterministic influence of a few forks etc., is probably too big to give a more precise answer. -- Kirk Strauser pgp0.pgp Description: PGP signature
RE: Using bc in bash script
> > > Sorry I jumped the gun there, the scale is needed for > this to work Not a problem, thanks for working with me! > > The precision is in hundredths of a second as I understand it from > > playing with time(!): > > > > #!/bin/sh > > time_file=tmp.time > > time="time -a -o $time_file" > > $time cat /var/log/messages >/dev/null 2>&1 > > $time cat /var/log/maillog >/dev/null 2>&1 > > awk '{sum+=$1}END{print sum}' $time_file > > rm $time_file > > > > which outputs: > > > > [18:34:03] [EMAIL PROTECTED] /home/munk# sh tmp.sh > > 0.01 > > > > This simple script just times each cat command and appends > the output from > > time to the $time_file, then prints out the sum of the > first columns of > > the time outputs found in the time file. > > > > Just an idea. > > -- > > Jez, > > Your shell script works fine for me, resolving to 100th's of a second. > > Looks like a good answer for Charles :-) > > I still am wondering why the date command does not have a format > string for seconds (down to 100th's) like "+%ss" and also why > the time command stops at 100th's when other programs resolve > time to 5 or 6 decimal places ? > > Thanks for sharing the info, Yes, thanks very much! I'll try that as soon as I finish my break from hanging window blinds for my daughter. (ick!) ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
At 2003-08-14T16:45:56Z, "Charles Howse" <[EMAIL PROTECTED]> writes: > I think this whole thing is dependent on the fact that `date +%s` reports > integers. As his daughter says, "DUUUH"! I only saw the $end_time and $start_time variables, and not their origins. I'll go back to lurking now. :) -- Kirk Strauser pgp0.pgp Description: PGP signature
Re: Using bc in bash script
On Thu, Aug 14, 2003 at 11:08:21AM -0500, Charles Howse wrote: > > On Thu, Aug 14, 2003 at 10:46:45AM -0500, Charles Howse wrote: > > > Hello List, > > > > > > I've migrated from Redhat Linux 9 to FreeBSD 4.8-RELEASE, > > character mode > > > - no gui. > > > > > > I'm trying to calculate the number of seconds between > > $start_time and > > > $end_time in a bash script. > > > > > > Start_time=`date +%s` # Seconds past midnight at start of script > > > [ do lots of stuff ] > > > End_time=`date +%s` # Seconds past midnight at end of script > > > > > > Then I want to: et=`bc $end_time - $start_time` to get the number of > > > seconds or fractions of seconds elapsed. > > How about: > > > > et=`echo "$end_time - $start_time" | bc` > > Hi Jez, thanks for the reply! > > As my daughter would say, "Well, DUHHH!" :) > That worked fine, it reported 0 seconds. Hah, computers are just too damn fast :) > Can I refine it to give me something like: .784 seconds? You could use 'time' perhaps to time whatever it is you're timing - I'm not overly familiar with the time(1) command though, best to check the man page :) -- Jez http://www.munk.nu/ ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
RE: Using bc in bash script
> Charles, > > This will set bc precision to 5 decimal places: > > et=`echo "scale=5 ; $end_time - $start_time" | bc` Ohhh, I was really hoping on that one...but no, it still reports 0 seconds. Maybe there's something in the script itself that's messing this up. Here is the entire script: #!/usr/local/bin/bash # Daily Report # Declare variables start_time=`date +%s` time1=`date +%R` month=`date +%b` day=`date +%e` # Cleanup files if [ -a /root/daily.log ] ; then rm /root/daily.log fi # Main report header echo "Daily Report for Larry for" `date '+%A, %B %d %Y'`"." >> /root/daily.log echo "" >> /root/daily.log echo >> /root/daily.log # OS header echo "Current Operating System" >> /root/daily.log echo "" >> /root/daily.log uname -sr >> /root/daily.log echo >> /root/daily.log # Uptime Header echo "Uptime" >> /root/daily.log echo "" >> /root/daily.log uptime >> /root/daily.log echo >> /root/daily.log # Crontab Header echo "Cron Jobs" >> /root/daily.log echo "" >> /root/daily.log crontab -l >> /root/daily.log echo >> /root/daily.log # Last Header echo "Logins today" >> /root/daily.log echo "" >> /root/daily.log last | grep "$month $day" >> /root/daily.log echo >> /root/daily.log # Superuser Header echo "Accounts with uid = 0 (Superusers)" >> /root/daily.log echo "" >> /root/daily.log awk -F: '( $3 == 0 ) { print $1 }' /etc/passwd >> /root/daily.log echo >> /root/daily.log # /etc/passwd Header echo "Accounts that have a valid shell" >> /root/daily.log echo "" >> /root/daily.log cat /etc/passwd | egrep -v "("nologin"|"uucico"|"\#")" >> /root/daily.log echo >> /root/daily.log # DF Header echo "Disk Free space" >> /root/daily.log echo "" >> /root/daily.log df -h >> /root/daily.log echo >> /root/daily.log # netstat Header echo "Netstat -an results" >> /root/daily.log echo "" >> /root/daily.log netstat -an >> /root/daily.log echo >> /root/daily.log # ifconfig echo "Status of network interfaces" >> /root/daily.log echo "" >> /root/daily.log ifconfig >> /root/daily.log echo >> /root/daily.log # Compute the elapsed time echo "Elapsed Time" >> /root/daily.log echo "" >> /root/daily.log echo "Report completed at:" `date +%R` >> /root/daily.log echo "Report begun at:" $time1 >> /root/daily.log end_time=`date +%s` et=`echo "scale=5 ; $end_time - $start_time" | bc` echo " Elapsed Time: " $et "seconds" >> /root/daily.log echo >> /root/daily.log # File Modification Date echo "Last modified" >> /root/daily.log echo "" >> /root/daily.log ls -l /root/bin/daily_report | cut -d" " -f9,10,11 >> /root/daily.log # Mail to Charles cat /root/daily.log | mail -s "Daily Report from Larry" charles ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
> I'm trying to calculate the number of seconds between $start_time and > $end_time in a bash script. Bash has built-in integer arithmetic: et=$[End_time - Start_time] -- Richard ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
Re: Using bc in bash script
In the last episode (Aug 14), Richard Tobin said: > > I'm trying to calculate the number of seconds between $start_time and > > $end_time in a bash script. > > Bash has built-in integer arithmetic: > > et=$[End_time - Start_time] Most bourne-based shells have arithmetic evaluation. For portability, you should use the $(( )) syntax: /bin/sh $ echo $(( 1 + 3 )) 4 $ -- Dan Nelson [EMAIL PROTECTED] ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"
RE: Using bc in bash script
> On Thu, Aug 14, 2003 at 10:46:45AM -0500, Charles Howse wrote: > > Hello List, > > > > I've migrated from Redhat Linux 9 to FreeBSD 4.8-RELEASE, > character mode > > - no gui. > > > > I'm trying to calculate the number of seconds between > $start_time and > > $end_time in a bash script. > > > > Start_time=`date +%s` # Seconds past midnight at start of script > > [ do lots of stuff ] > > End_time=`date +%s` # Seconds past midnight at end of script > > > > Then I want to: et=`bc $end_time - $start_time` to get the number of > > seconds or fractions of seconds elapsed. > How about: > > et=`echo "$end_time - $start_time" | bc` Hi Jez, thanks for the reply! As my daughter would say, "Well, DUHHH!" That worked fine, it reported 0 seconds. Can I refine it to give me something like: .784 seconds? ___ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"