Annotation of embedaddon/dhcp/dhcpctl/omshell.1, revision 1.1
1.1 ! misho 1: .\" $Id: omshell.1,v 1.4.690.2 2009-07-24 22:04:52 sar Exp $
! 2: .\"
! 3: .\" Copyright (c) 2004,2009 by Internet Systems Consortium, Inc. ("ISC")
! 4: .\" Copyright (c) 2001-2003 by Internet Software Consortium
! 5: .\"
! 6: .\" Permission to use, copy, modify, and distribute this software for any
! 7: .\" purpose with or without fee is hereby granted, provided that the above
! 8: .\" copyright notice and this permission notice appear in all copies.
! 9: .\"
! 10: .\" THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
! 11: .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 12: .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
! 13: .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 14: .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 15: .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
! 16: .\" OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 17: .\"
! 18: .\" Internet Systems Consortium, Inc.
! 19: .\" 950 Charter Street
! 20: .\" Redwood City, CA 94063
! 21: .\" <info@isc.org>
! 22: .\" https://www.isc.org/
! 23: .\"
! 24: .\" This software has been written for Internet Systems Consortium
! 25: .\" by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
! 26: .\" To learn more about Internet Systems Consortium, see
! 27: .\" ``https://www.isc.org/''. To learn more about Vixie Enterprises,
! 28: .\" see ``http://www.vix.com''. To learn more about Nominum, Inc., see
! 29: .\" ``http://www.nominum.com''.
! 30: .TH omshell 1
! 31: .SH NAME
! 32: omshell - OMAPI Command Shell
! 33: .SH SYNOPSIS
! 34: .B omshell
! 35: .SH DESCRIPTION
! 36: The OMAPI Command Shell, omshell, provides an interactive way to connect to,
! 37: query, and possibly change, the ISC DHCP Server's state via OMAPI, the Object
! 38: Management API. By using OMAPI and omshell, you do not have to stop, make
! 39: changes, and then restart the DHCP server, but can make the changes
! 40: while the server is running. Omshell provides a way of accessing
! 41: OMAPI.
! 42: .PP
! 43: OMAPI is simply a communications mechanism that allows you to
! 44: manipulate objects. In order to actually \fIuse\fR omshell, you
! 45: .I must
! 46: understand what objects are available and how to use them.
! 47: Documentation for OMAPI objects can be found in the documentation for
! 48: the server that provides them - for example, in the \fBdhcpd(1)\fR
! 49: manual page and the \fBdhclient(1)\fR manual page.
! 50: .SH CONTRIBUTIONS
! 51: .PP
! 52: This software is free software. At various times its development has
! 53: been underwritten by various organizations, including the ISC and
! 54: Vixie Enterprises. The development of 3.0 has been funded almost
! 55: entirely by Nominum, Inc.
! 56: .PP
! 57: At this point development is being shepherded by Ted Lemon, and hosted
! 58: by the ISC, but the future of this project depends on you. If you
! 59: have features you want, please consider implementing them.
! 60: .SH LOCAL AND REMOTE OBJECTS
! 61: .PP
! 62: Throughout this document, there are references to local and remote objects.
! 63: Local objects are ones created in omshell with the \fBnew\fR command. Remote
! 64: objects are ones on the server: leases, hosts, and groups that the DHCP
! 65: server knows about. Local and remote objects are associated together to
! 66: enable viewing and modification of object attributes. Also, new remote
! 67: objects can be created to match local objects.
! 68: .SH OPENING A CONNECTION
! 69: .PP
! 70: omshell is started from the command line. Once omshell is started, there are
! 71: several commands that can be issued:
! 72: .PP
! 73: .B server \fIaddress\fR
! 74: .RS 0.5i
! 75: where address is the IP address of the DHCP server to connect to. If this is
! 76: not specified, the default server is 127.0.0.1 (localhost).
! 77: .RE
! 78: .PP
! 79: .B port \fInumber\fR
! 80: .RS 0.5i
! 81: where number is the port that OMAPI listens on. By default, this is 7911.
! 82: .RE
! 83: .PP
! 84: .B key \fIname secret\fR
! 85: .RS 0.5i
! 86: This specifies the TSIG key to use to authenticate the OMAPI transactions.
! 87: \fIname\fR is the name of a key defined in \fIdhcpd.conf\fR with the
! 88: \fBomapi-key\fR statement. The \fIsecret\fR is the secret key generated from
! 89: \fBdnssec-keygen\fR or another key generation program.
! 90: .RE
! 91: .PP
! 92: .B connect
! 93: .RS 0.5i
! 94: This starts the OMAPI connection to the server as specified by the \fIserver\fR
! 95: statement.
! 96: .SH CREATING LOCAL OBJECTS
! 97: .PP
! 98: Any object defined in OMAPI can be created, queried, and/or modified. The
! 99: object types available to OMAPI are defined in \fBdhcpd(8)\fR and
! 100: \fBdhclient(8)\fR. When using omshell, objects are first defined locally,
! 101: manipulated as desired, and then associated with an object on the server.
! 102: Only one object can be manipulated at a time. To create a local object, use
! 103: .PP
! 104: .B new \fIobject-type\fR
! 105: .RS 0.5i
! 106: \fIobject-type\fR is one of group, host, or lease.
! 107: .RE
! 108: .PP
! 109: At this point, you now have an object that you can set properties on. For
! 110: example, if a new lease object was created with \fInew lease\fR, any of a
! 111: lease's attributes can be set as follows:
! 112: .PP
! 113: .B set \fIattribute-name = value\fR
! 114: .RS 0.5i
! 115: \fBAttribute\fR names are defined in \fBdhcpd(8)\fR and \fBdhclient(8)\fR.
! 116: Values should be quoted if they are strings. So, to set a lease's IP address,
! 117: you would do the following:
! 118: \fB set ip-address = 192.168.4.50\fR
! 119: .SH ASSOCIATING LOCAL AND REMOTE OBJECTS
! 120: .PP
! 121: At this point, you can query the server for information about this lease, by
! 122: .PP
! 123: .B open
! 124: .PP
! 125: Now, the local lease object you created and set the IP address for is associated
! 126: with the corresponding lease object on the DHCP server. All of the lease
! 127: attributes from the DHCP server are now also the attributes on the local
! 128: object, and will be shown in omshell.
! 129: .SH VIEWING A REMOTE OBJECT
! 130: .PP
! 131: To query a lease of address 192.168.4.50, and find out its attributes, after
! 132: connecting to the server, take the following steps:
! 133: .PP
! 134: .B new "lease"
! 135: .PP
! 136: This creates a new local lease object.
! 137: .PP
! 138: .B set ip-address = 192.168.4.50
! 139: .PP
! 140: This sets the \fIlocal\fR object's IP address to be 192.168.4.50
! 141: .PP
! 142: .B open
! 143: .PP
! 144: Now, if a lease with that IP address exists, you will see all the information
! 145: the DHCP server has about that particular lease. Any data that isn't readily
! 146: printable text will show up in colon-separated hexadecimal values. In this
! 147: example, output back from the server for the entire transaction might look
! 148: like this:
! 149: .nf
! 150: .sp 1
! 151: > new "lease"
! 152: obj: lease
! 153: > set ip-address = 192.168.4.50
! 154: obj: lease
! 155: ip-address = c0:a8:04:32
! 156: > open
! 157: obj: lease
! 158: ip-address = c0:a8:04:32
! 159: state = 00:00:00:02
! 160: dhcp-client-identifier = 01:00:10:a4:b2:36:2c
! 161: client-hostname = "wendelina"
! 162: subnet = 00:00:00:06
! 163: pool = 00:00:00:07
! 164: hardware-address = 00:10:a4:b2:36:2c
! 165: hardware-type = 00:00:00:01
! 166: ends = dc:d9:0d:3b
! 167: starts = 5c:9f:04:3b
! 168: tstp = 00:00:00:00
! 169: tsfp = 00:00:00:00
! 170: cltt = 00:00:00:00
! 171: .fi
! 172: .PP
! 173: As you can see here, the IP address is represented in hexadecimal, as are the
! 174: starting and ending times of the lease.
! 175: .SH MODIFYING A REMOTE OBJECT
! 176: .PP
! 177: Attributes of remote objects are updated by using the \fBset\fR command as
! 178: before, and then issuing an \fBupdate\fR command. The \fBset\fR command sets
! 179: the attributes on the current local object, and the \fBupdate\fR command
! 180: pushes those changes out to the server.
! 181: .PP
! 182: Continuing with the previous example, if a \fBset client-hostname =
! 183: "something-else"\fR was issued, followed by an \fBupdate\fR command, the
! 184: output would look about like this:
! 185: .nf
! 186: .sp 1
! 187: > set client-hostname = "something-else"
! 188: obj: lease
! 189: ip-address = c0:a8:04:32
! 190: state = 00:00:00:02
! 191: dhcp-client-identifier = 01:00:10:a4:b2:36:2c
! 192: client-hostname = "something-else"
! 193: subnet = 00:00:00:06
! 194: pool = 00:00:00:07
! 195: hardware-address = 00:10:a4:b2:36:2c
! 196: hardware-type = 00:00:00:01
! 197: ends = dc:d9:0d:3b
! 198: starts = 5c:9f:04:3b
! 199: tstp = 00:00:00:00
! 200: tsfp = 00:00:00:00
! 201: cltt = 00:00:00:00
! 202: > update
! 203: obj: lease
! 204: ip-address = c0:a8:04:32
! 205: state = 00:00:00:02
! 206: dhcp-client-identifier = 01:00:10:a4:b2:36:2c
! 207: client-hostname = "something-else"
! 208: subnet = 00:00:00:06
! 209: pool = 00:00:00:07
! 210: hardware-address = 00:10:a4:b2:36:2c
! 211: hardware-type = 00:00:00:01
! 212: ends = dc:d9:0d:3b
! 213: starts = 5c:9f:04:3b
! 214: tstp = 00:00:00:00
! 215: tsfp = 00:00:00:00
! 216: cltt = 00:00:00:00
! 217: .fi
! 218: .SH NEW REMOTE OBJECTS
! 219: .PP
! 220: New remote objects are created much in the same way that existing server
! 221: objects are modified. Create a local object using \fBnew\fR, set the
! 222: attributes as you'd wish them to be, and then create the remote object with
! 223: the same properties by using
! 224: .PP
! 225: .B create
! 226: .PP
! 227: Now a new object exists on the DHCP server which matches the properties that
! 228: you gave your local object. Objects created via OMAPI are saved into the
! 229: dhcpd.leases file.
! 230: .PP
! 231: For example, if a new host with the IP address of 192.168.4.40 needs to be
! 232: created it would be done as follows:
! 233: .nf
! 234: .sp 1
! 235: > new host
! 236: obj: host
! 237: > set name = "some-host"
! 238: obj: host
! 239: name = "some-host"
! 240: > set hardware-address = 00:80:c7:84:b1:94
! 241: obj: host
! 242: name = "some-host"
! 243: hardware-address = 00:80:c7:84:b1:94
! 244: > set hardware-type = 1
! 245: obj: host
! 246: name = "some-host"
! 247: hardware-address = 00:80:c7:84:b1:94
! 248: hardware-type = 1
! 249: > set ip-address = 192.168.4.40
! 250: obj: host
! 251: name = "some-host"
! 252: hardware-address = 00:80:c7:84:b1:94
! 253: hardware-type = 1
! 254: ip-address = c0:a8:04:28
! 255: > create
! 256: obj: host
! 257: name = "some-host"
! 258: hardware-address = 00:80:c7:84:b1:94
! 259: hardware-type = 00:00:00:01
! 260: ip-address = c0:a8:04:28
! 261: >
! 262: .fi
! 263: .PP
! 264: Your dhcpd.leases file would then have an entry like this in it:
! 265: .nf
! 266: .sp 1
! 267: host some-host {
! 268: dynamic;
! 269: hardware ethernet 00:80:c7:84:b1:94;
! 270: fixed-address 192.168.4.40;
! 271: }
! 272: .fi
! 273: .PP
! 274: The \fIdynamic;\fR line is to denote that this host entry did not come from
! 275: dhcpd.conf, but was created dynamically via OMAPI.
! 276: .SH RESETTING ATTRIBUTES
! 277: .PP
! 278: If you want to remove an attribute from an object, you can do this with the
! 279: \fBunset\fR command. Once you have unset an attribute, you must use the
! 280: \fBupdate\fR command to update the remote object. So, if the host "some-host"
! 281: from the previous example will not have a static IP address anymore, the
! 282: commands in omshell would look like this:
! 283: .nf
! 284: .sp 1
! 285: obj: host
! 286: name = "some-host"
! 287: hardware-address = 00:80:c7:84:b1:94
! 288: hardware-type = 00:00:00:01
! 289: ip-address = c0:a8:04:28
! 290: > unset ip-address
! 291: obj: host
! 292: name = "some-host"
! 293: hardware-address = 00:80:c7:84:b1:94
! 294: hardware-type = 00:00:00:01
! 295: ip-address = <null>
! 296: >
! 297: .fi
! 298: .SH REFRESHING OBJECTS
! 299: .PP
! 300: A local object may be refreshed with the current remote object properties
! 301: using the \fBrefresh\fR command. This is useful for object that change
! 302: periodically, like leases, to see if they have been updated. This isn't
! 303: particularly useful for hosts.
! 304: .SH DELETING OBJECTS
! 305: .PP
! 306: Any remote object that can be created can also be destroyed. This is done by
! 307: creating a new local object, setting attributes, associating the local and
! 308: remote object using \fBopen\fR, and then using the \fBremove\fR command.
! 309: If the host "some-host" from before was created in error, this could be
! 310: corrected as follows:
! 311: .nf
! 312: .sp 1
! 313: obj: host
! 314: name = "some-host"
! 315: hardware-address = 00:80:c7:84:b1:94
! 316: hardware-type = 00:00:00:01
! 317: ip-address = c0:a8:04:28
! 318: > remove
! 319: obj: <null>
! 320: >
! 321: .fi
! 322: .SH HELP
! 323: .PP
! 324: The \fBhelp\fR command will print out all of the commands available in
! 325: omshell, with some syntax pointers.
! 326: .SH SEE ALSO
! 327: dhcpctl(3), omapi(3), dhcpd(8), dhclient(8), dhcpd.conf(5), dhclient.conf(5).
! 328: .SH AUTHOR
! 329: .B omshell
! 330: was written by Ted Lemon of Nominum, Inc. Information about Nominum
! 331: can be found at
! 332: .B http://www.nominum.com.
! 333: This preliminary documentation was written by Wendy Verschoor of Nominum,
! 334: Inc., while she was testing omshell.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>