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://man.freebsd.org/cgi/man.cgi?query=confctl&manpath=FreeBSD+14.1-RELEASE+and+Ports>

home | help