Jordan Brown writes: > James Carlson wrote: > > I agree that calling out to external scripts is maximally flexible, > > but be careful: a lot of future cost comes with that flexibility. > > Calling out to a user-provided script seems pretty fundamental. If it's > a user-provided script, then there's no upgrade problem. The upgrade > problem comes if it's a Sun-provided script and the user edits it.
Actually, we have fun in both cases. If it's user-provided, but then "Sun" (really: the distributor or the project team or someone else in the OpenSolaris community) decides to add some supplied scripting, then we have a conflict. Do we move the user script aside? Do we create an alternate scripting mechanism? Which one goes first? > Perhaps there are "actions" that are Sun-provided, that might happen to > be implemented as shell scripts, and one of the actions is "run > user-provided program". (Note that I say "program" rather than > "script"; it should be anything that you can exec, which includes but is > not limited to shell scripts. Let's avoid repeating the /etc/rc*.d > discussion :-) For one example of how nasty this sort of thing can get, look at the hack-o-rama involved with the pppd scripts on most Linux distributions. What started as a simple "I'll exec /etc/ppp/ip-up when IPCP goes to Opened state" in the original design has become a set of subdirectories (/etc/ppp/ip-up.d/), a mix of user and vendor supplied scripts, and an /sbin/rc-like script permanently installed as /etc/ppp/ip-up (and yet sometimes mistakenly hacked by users) to drive the whole concoction. Not going there would probably be an element of a good plan. > There should probably be a way to trigger multiple actions, so that one > can send an SNMP trap *and* send e-mail *and* run a user program, > without having to hack the action script. I agree with that. -- James Carlson, Solaris Networking <james.d.carlson at sun.com> Sun Microsystems / 35 Network Drive 71.232W Vox +1 781 442 2084 MS UBUR02-212 / Burlington MA 01803-2757 42.496N Fax +1 781 442 1677