From owner-freebsd-hackers@FreeBSD.ORG Wed Oct 6 23:09:50 2010 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6A0DC1065673 for ; Wed, 6 Oct 2010 23:09:50 +0000 (UTC) (envelope-from jamesbrandongooch@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 006BE8FC1A for ; Wed, 6 Oct 2010 23:09:49 +0000 (UTC) Received: by wyb29 with SMTP id 29so131953wyb.13 for ; Wed, 06 Oct 2010 16:09:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=dkr7TXN90dSDB+PV1e4QThw+XSHZgQrF1/i/9H69NJs=; b=hYPsuAMooT1FNL3ixMd4yzQIHp+MhxmF7G7lMkI6C0pE4szTrxMuGcgch9vBiCtwja uTpZOmXfe13TFNvFNdgzMHyOzqi+mAYIZlPdyFcC/Dq/Zy7X+9CkVrdveBQ8UKZqbkBI bXqpbAUTXiZ67pfKcjaG3aMyuW1I1TW9LPb7Q= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=rTRZ1+qqoueulM0N3PQppgWKcxPu03wcqS394mce8uWedGE+0Q0eR2Rhrr3gIF6SQz GbUm2iD6TCUaC0RXNVlw6cbMW1TEJDXvYRQxLXrYnGw3bPYEaSFRnUZvlgxjjbKp5mk+ IaqB4HZ7W40rrjU9p9JknmCZRIWvYNJ2eISXM= MIME-Version: 1.0 Received: by 10.216.176.8 with SMTP id a8mr1490056wem.93.1286406588985; Wed, 06 Oct 2010 16:09:48 -0700 (PDT) Received: by 10.216.133.133 with HTTP; Wed, 6 Oct 2010 16:09:48 -0700 (PDT) In-Reply-To: <1286397912.27308.40.camel@localhost.localdomain> References: <1286397912.27308.40.camel@localhost.localdomain> Date: Wed, 6 Oct 2010 18:09:48 -0500 Message-ID: From: Brandon Gooch To: Devin Teske Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-hackers@freebsd.org Subject: Re: sysconf -- a sysctl(8)-like utility for managing /etc/rc.conf et. al. X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Oct 2010 23:09:50 -0000 On Wed, Oct 6, 2010 at 3:45 PM, Devin Teske wrote: > Hello fellow freebsd-hackers, > > Long-time hacker, first-time poster. > > I'd like to share a shell script that I wrote for FreeBSD system > administration. > > The attached shell script works similar to sysctl(8), but rather than > querying or working on sysctl MIBs, it instead works on the /etc/rc.conf > (and /etc/rc.conf.local) files. > > Syntax shown below (available by running the script without arguments): > > Usage: sysconf [OPTIONS] name[=3Dvalue] ... > OPTIONS: > =A0 =A0 =A0 =A0-h --help =A0 Print this message to stderr and exit. > =A0 =A0 =A0 =A0-d =A0 =A0 =A0 =A0 =A0Print list of internal dependencies = before exit. > =A0 =A0 =A0 =A0-e =A0 =A0 =A0 =A0 =A0Print query results as `var=3Dvalue'= (useful for producing > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0output to be fed back in). Ignored= if -n is specified. > =A0 =A0 =A0 =A0-n =A0 =A0 =A0 =A0 =A0Show only variable values, not their= names. > > ENVIRONMENT: > =A0 =A0 =A0 =A0SYSCONF_SHOW_DEPS =A0 =A0 Dump list of dependencies. Must = be zero or one > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(default: `0') > =A0 =A0 =A0 =A0RC_DEFAULTS =A0 =A0 =A0 =A0 =A0 Location of `/etc/defaults= /rc.conf' file. > > Examples: > > root@mymachine ~ $ sysconf hostname > hostname: mymachine.localdomain > root@mymachine ~ $ sysconf hostname=3Dfoomaster.deluxe.com > hostname: mymachine.localdomain -> foomaster.deluex.com > root@mymachine ~ $ sysconf -e hostname > hostname=3D"foomaster.deluxe.com" > root@mymachine ~ $ sysconf -n hostname > foomaster.deluxe.com > > The script has zero external dependencies. None. Period. It will use > grep(1) if installed, but it is not required. > > Tested extensively on FreeBSD-4.8, FreeBSD-4.11, FreeBSD-8.0, and > FreeBSD-8.1. It seems the list ate the attachment :( Also, take a look at sysconf(3). I think there may be a certain amount of hesitation to welcome a utility with the same name as a POSIX-compliant C library function... ...how about a name like 'sysrc' or 'rcconfig' or something indicating a relationship with the rc.conf file or rc system? Anyway, sounds cool, as I've had a need recently to do some automated configuring of several rc.conf files -- my method was very hackish, and will never see the light of public scrutiny :) -Brandon