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  configuration
	    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 ('/* ... */') com-
	    ment markers.

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

     -I     Instead of writing a temporary file and  then  atomically  replacing
	    the  configuration file, rewrite it in place.  It also makes confctl
	    acquire a file lock when reading or writing the configuration 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,  re-
     placing  the  old	file.	This  will fail if it's impossible to create 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)

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

home | help