On Thu, 19 Apr 2007, Xinwei Hu wrote: > [David Lee had earlier written:] > > > > 5. "ping -q -c 1 $ping_host". The options for "ping" are notoriously > > variable from system to system. Keep it simple. (For example my system > > doesn't have a "-q" option; and it says that "-c <n>" is for a thing > > called "traffic class", only valid on IPv6.) If they are not necessary, > > leave them out. If they are necessary, then for those of us who come > > along later to maintain code, especially on other operating systems, it is > > worth adding comments about your intentions, such as: > > # -q: to do foo > > # -c <n> to do bar > Here on my system: > -c count > Stop after sending count ECHO_REQUEST packets. With deadline > option, ping waits for count ECHO_REPLY packets, until the time‐ > out expires. > -q Quiet output. Nothing is displayed except the summary lines at > startup time and when finished.
"ping" on Linux and Solaris (to name two of our OSes) seem incompatible in their options. > > -q can be removed as we did ">/dev/null 2>&1" already. Yes. The ">/dev/null 2>&1" method is the way to go to suppress output across a range of OSes > -c is used so that ping won't last forever. On Solaris: "ping hostname [data_size ] [ count ]" In practice, it seems that "ping hostname number" also causes a swift return for non-replying hosts. See "resources/heartbeat/IPaddr.in" and "resources/OCF/IPaddr.in" which tryi to do the right thing according to which OS they are running on. So it might be worth us trying to develop our own "ping-wrapper" command with a fixed, portable, interface, whose contents are based on those in those other two files, and which they would then use, and which your new "pingd" could also use. > > 6. "date +%s": My OS doesn't support the "+%s" option. Could you clarify > > your intention? > "date +%s" outputs the seconds since 1970-01-01 00:00:00 UTC. > I try to make sure the interval of every ping is equal Hmmm... that's absent from Solaris (and possibly from other traditional UNIX systems also). But I guess that what you want is a number of seconds since some arbitrary baseline, and that the "1970" value of the baseline is not important. So how about "date +%Y%m%d%H%M%S", which seems to be available on a range of systems? Here's its typical output: host% date; date +%Y%m%d%H%M%S Fri Apr 20 16:20:11 BST 2007 20070420162011 host% It seems to meet the criteria and should be portable enough. I can see one failure condition: if this is running over the time interval that Daylight Savings comes into effect in some countries. > Yes, this script is written with only Linux in mind. I'll try to fix these > portability issues. > > Thanks a lot for your review. :) You're welcome! -- : David Lee I.T. Service : : Senior Systems Programmer Computer Centre : : UNIX Team Leader Durham University : : South Road : : http://www.dur.ac.uk/t.d.lee/ Durham DH1 3LE : : Phone: +44 191 334 2752 U.K. : _______________________________________________ Linux-HA mailing list [email protected] http://lists.linux-ha.org/mailman/listinfo/linux-ha See also: http://linux-ha.org/ReportingProblems
