Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CONFCTL(1)			 User Manuals			    CONFCTL(1)

NAME
       confctl - sysctl-like tool for config files

SYNOPSIS
       confctl [-CEIS] -a [-n] config-file
       confctl [-CEIS] [-n] config-file	variable-name ...
       confctl [-CEIS] -w variable-name=value config-file
       confctl [-CEIS] -x variable-name	config-file

DESCRIPTION
       confctl	provides  access  to  configuration files in C-like syntax via
       sysctl(8)-like interface, making	it easy	to use from shell scripts.

       The following options are available:

       -a     Show all the variables and their values.

       -n     Show only	values,	not names.

       -w     Change value of configuration variable and update	the configura-
	      tion file.  Variable is created if it doesn't yet	exist.

       -x     Delete the variable and update the configuration file.

       -C     Recognize	 C++  double slash ('//') and slash star ('/* ... */')
	      comment markers.

       -E     Use equals sign (' = ') to separate values from names.   Without
	      this  option, the	equals sign is ignored,	i.e. treated as	white-
	      space.

       -I     Instead of writing a temporary file and then atomically  replac-
	      ing  the configuration file, rewrite it in place.	 It also makes
	      confctl acquire a	file lock when reading or writing the configu-
	      ration file.

       -S     Use  semicolon  (';')  after values.  Note that the semicolon is
	      always treated as	terminating character when parsing, regardless
	      of this option.

EXAMPLES
       Say you have a configuration file that looks like this:

       interfaces {
	    eth0 {
		 ip-address	192.168.1.1
		 mtu	   9000
	    }

	    eth1 {
		 ip-address	192.168.2.1
		 description	"Uplink	to Telia"
	    }
       }

       You can access all the variables	like this (note	the -a option):

       % confctl -a config-file
       interfaces.eth0.ip-address=192.168.1.1
       interfaces.eth0.mtu=9000
       interfaces.eth1.ip-address=192.168.2.1
       interfaces.eth1.description="Uplink to Telia"

       You can also query individual variables:

       % confctl config-file interfaces.eth0.ip-address	interfaces.eth1.ip-address
       interfaces.eth0.ip-address=192.168.1.1
       interfaces.eth1.ip-address=192.168.2.1

       To modify a variable, use the -w	option:

       % confctl -w interfaces.eth0.ip-address=192.168.1.2 config-file

       You  can	 pass the -w option multiple times to set several variables at
       once.  You use exactly the same syntax to add new variables:

       % confctl -w interfaces.eth2.ip-address=10.0.0.1	-w interfaces.eth2.netmask=24 config-file
       % confctl config-file interfaces.eth2
       interfaces.eth2.ip-address=10.0.0.1
       interfaces.eth2.netmask=24
       % cat config-file

       interfaces {
	    eth0 {
		 ip-address	192.168.1.1
		 mtu	   9000
	    }

	    eth1 {
		 ip-address	192.168.2.1
		 description	"Uplink	to Telia"
	    }

	    eth2 {
		 ip-address	10.0.0.1
		 netmask	24
	    }
       }

       Note that file modification preserves formatting	and  indentation.   It
       also  preserves all the comments, including ones	for variables modified
       in place.

       Also note that by default, modification is done by writing a  temporary
       copy  of	 the file, in the same containing directory, and then renaming
       it, replacing the old file.  This will fail if it's impossible to  cre-
       ate  new	 files,	 and  won't do the right thing when the	file name is a
       symlink.	 In that case, use -I option to	rewrite	configuration file  in
       place.

AUTHOR
       Edward Tomasz Napierala <trasz@FreeBSD.org>

SEE ALSO
       sysctl(8)

confctl				  20 May 2012			    CONFCTL(1)

NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | AUTHOR | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=confctl&sektion=1&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help