[ Next Article | Previous Article | Book Contents | Library Home | Legal | Search ]
Network Information Services (NIS and NIS+) Guide

Administering NIS+ Tables

This section describes how to use the following NIS+ table administration commands:

Using the nistbladm Command

The nistbladm command is the primary NIS+ table administration command. With it, you can create, modify, and delete NIS+ tables and entries. To create a table, its directory must already exist. To add entries to the table, the table and columns must already be defined.

To create a table, you must have create rights to the directory under which you will create it. To delete a table, you must have destroy rights to the directory. To modify the contents of a table, whether to add, change, or delete entries, you must have modify rights to the table or the entries.

To create a table, use:

nistbladm -c table-type columnspec...tablename

To delete a table, use:

nistbladm -d tablename columnspec ::=  column=[CSI,rights]

To add entries, use:

nistbladm -a 
nistbladm -A entry

To modify entries, use:

nistbladm -m new-entry old-entry

To remove entries, use:

nistbladm -r
nistbladm -R [entry or table] entry::=column=value ... tablename [column=value,...],tablename

The columnspec syntax is explained in the command description for nistbladm.

Using the niscat Command

The niscat command displays the contents of an NIS+ table. However, you can also use it to display the object properties of the table. You must have read rights to the table, entries, or columns that you wish to display.

To display the contents of a table, use:

niscat [-hM] tablename

To display the object properties of a table, use:

niscat -o tablename
niscat -o entry 
niscat Syntax Options
Option Description
-h Header. Displays a header line above the table entries, listing the name of each column.
-M Master. Displays only the entries of the table stored on the Master server. This ensures you get the most up-to-date information and should be used only for debugging.
-o Object. Displays object information about the table, such as column names, properties, and servers.

For more information, see the command description for niscat.

Using the nismatch and nisgrep Commands

The nismatch and nisgrep commands search through NIS+ tables for entries that match a particular string or regular expression, respectively. They display either the entries themselves or a count of how many entries matched. The differences between the nismatch and nisgrep commands are highlighted in following table.

Comparison of nisgrep and nismatch
Characteristics nismatch nisgrep
Search criteria Accepts text only Accepts regular expressions
Speed Faster Slower
Searches through Searchable columns only All columns, whether searchable or not
Syntax of search criteria column=string ... tablename

[column=string,...],tablename

column=exp ... tablename

The tasks and examples in this section describe the syntax for both commands.

To use either command, you must have read access to the table you are searching through.

The examples in this section are based on the values in the following table, named depts.wiz.com. Only the first two columns are searchable.

depts.wiz.com. Example Table
Name (S) Site (S) Manager
R&D SanFran kuznetsov
Sales SanFran jhill
Manf-1 Emeryville hosteen
Manf-2 Sausalito lincoln
Shipping-1 Emeryville tsosulu
Shipping-2 Sausalito katabami
Service Sparks franklin

About Regular Expressions

Regular expressions are combinations of text and symbols that you can use to search for special configurations of column values. For example, the regular expression 'Hello' searches for a value that begins with Hello:

rootmaster% nisgrep -h greeting='Hello' phrases.wiz.com. 

The regular expression symbols are summarized in the following table.

Regular Expression Symbols
Symbol Description
^string Find a value that begins with string.
string$ Find a value that ends with string.
. Find a value that has a number characters equal to the number of periods.
[chars] Find a value that contains any of the characters in the brackets.
*expr Find a value that has zero or more matches of the expr.
+ Find something that appears one or more times.
? Find any value.
\'s-char' Find a special character, such as ? or $.
x | y Find a character that is either x or y.

Syntax

To search through the first column, use:

nismatch string tablename
nisgrep reg-exp tablename

To search through a particular column, use:

nismatch column=string tablename
nisgrep column=reg-exp tablename

To search through multiple columns, use:

nismatch column=string ... tablename
nismatch [column=string,...],tablename
nisgrep  column=reg-exp ... tablename
nismatch and nisgrep Syntax Options
Option Description
-c Count. Instead of the entries themselves, displays a count of the entries that matched the search criteria.
-h Header. Displays a header line above the entries, listing the name of each column.
-M Master. Displays only the entries of the table stored on the master server. This ensures you get the most up-to-date information and should be used only for debugging.

Searching the First Column

To search for a particular value in the first column of a table, simply enter the first column value and a tablename. In nismatch, the value must be a string. In nisgrep, the value must be a regular expression.

nismatch [-h] string tablename
nisgrep [-h] reg-expression tablename

This example searches through the depts table for all the entries whose first column has a value of R&D:

rootmaster% nismatch -h 'R&D' depts.wiz.com.
rootmaster% nisgrep -h 'R&D' depts.wiz.com.
Note that quotes are used in the R&D expression to prevent the shell from interpreting the ampersand (&) as a metacharacter.

Searching a Particular Column

To search through a particular column other than the first, use the following syntax:

nismatch column=string tablename
nisgrep column=reg-expression tablename

This example searches through the depts table for all the entries whose second column has a value of SanFran:

rootmaster% nismatch -h Site=SanFran depts.wiz.com
rootmaster% nisgrep -h Site=SanFran depts.wiz.com

Searching Multiple Columns

To search for entries with matches in two or more columns, use the following syntax:

nismatch [-h] column=string ... tablename 
nismatch [-h] [column=string,...],tablename

nisgrep [-h] column=reg-exp ... tablename

This example searches for entries whose second column has a value of SanFran and whose third column has a value of jhill:

rootmaster% nismatch -h [Site=SanFran,Manager=jhill],  depts.wiz.com. 
rootmaster% nisgrep -h Site=SanFran Manager=jhill depts.wiz.com.

Using the nisln Command

The nisln command creates symbolic links between NIS+ objects and table entries. You can use it to link objects to objects or objects to table entries. (You cannot create a link that originates with a table entry.) All NIS+ administration commands accept the -L flag, which directs them to follow links between NIS+ objects.

To create a link to another object or entry, you must have modify rights to the source object; that is, the one that will point to the other object or entry.

Attention: Never link a cred table. Each org_dir directory should have its own cred table. Do not use a link to some other org_dir cred table. NIS+ cannot operate correctly with linked cred tables.

To create a link, use:

nisln source target 
nisln Syntax Options
Option Description
-L Follow links. If the source is itself a link, the new link will not be linked to it, but to that link's original source.
-D Defaults. Specify a different set of defaults for the linked object. Defaults are described in Specifying Nondefault Security Values at Creation Time.

For more information, see the command description for nisln.

Using the nissetup Command

The nissetup command expands an existing NIS+ directory object into a domain by creating the org_dir and groups_dir directories, and a full set of NIS+ tables. It does not, however, populate the tables with data. For that, you will need the nisaddent command. Expanding a directory into a domain is part of the process of setting up a domain.

The nissetup command can expand a directory into a domain that supports NIS clients as well.

To use nissetup, you must have modify rights to the directory under which you'll store the tables.

To expand a directory into an NIS+ domain, use:

/usr/lib/nis/nissetup
/usr/lib/nis/nissetup directory-name

To expand a directory into an NIS-compatible NIS+ domain, use:

/usr/lib/nis/nissetup -Y
/usr/lib/nis/nissetup -Y directory-name

For more information, see the command description for nissetup.

Using the nisaddent Command

The nisaddent command loads information from text files or NIS maps into NIS+ tables. It can also dump the contents of NIS+ tables back into text files.

You can use nisaddent to transfer information from one NIS+ table to another (for example, to the same type of table in another domain), but not directly. First, you need to dump the contents of the table into a file, and then load the file into the other table. Be sure, though, that the information in the file is formatted properly. Appendix A, Information in NIS+ Tables, describes the format required for each table.

When you load information into a table, you can use any of three options: replace, append, or merge. The append option simply adds the source entries to the NIS+ table. With the replace option, NIS+ first deletes all existing entries in the table and then adds the entries from the source. In a large table, this adds a large set of entries into the table's .log file (one set for removing the existing entries, another for adding the new ones), taking up space in /var/nis and making propagation to replicas time consuming.

The merge option produces the same result as the replace option but uses a different process, one that can greatly reduce the number of operations that must be sent to the replicas. With the merge option, NIS+ handles three types of entries differently:

When updating a large table with a file or map whose contents are not greatly different from those of the table, the merge option can spare the server a great many operations. Because the merge option deletes only the entries that are not duplicated in the source (the replace option deletes all entries, indiscriminately), it saves one delete and one add operation for every duplicate entry.

If you are loading information into the tables for the first time, you must have create rights to the table object. If you are overwriting information in the tables, you must have modify rights to the tables.

To load information from text files, use:

/usr/lib/nis/nisaddent -f filename table-type [domain]
/usr/lib/nis/nisaddent -f filename -t tablename table-type [domain]

To load information from NIS maps, use:

/usr/lib/nis/nisaddent -y NISdomain table-type [domain]
/usr/lib/nis/nisaddent -y NISdomain -t tablename table-type [domain]
/usr/lib/nis/nisaddent -Y map table-type [domain]
/usr/lib/nis/nisaddent -Y map -t tablename table-type [domain]

To dump information from an NIS+ table to a file, use:

/usr/lib/nis/nisaddent -d [-t tablename ] tabletype > filename 

Another way to load information from files is to use stdin as the source. However, you cannot use the -m option with stdin. You can use redirect (>) or pipe (|), but you cannot pipe into another domain.

Using cat with nisaddent
Task Command
Redirect
cat filename > nisaddent table-type
Redirect with append option
cat filename > nisaddent -a table-type
Redirect with append into another domain
cat filename > nisaddent -a table-type NIS+domain
Pipe
cat filename | nisaddent table-type
Pipe with append option
cat filename | nisaddent -a table-type

If the NIS+ table is one of the automounter tables or a nonstandard table, add the -t option and the complete name of the NIS+ table. For example:

master# nisaddent -f /etc/auto_home.xfr -t auto_home.org_dir.wiz.com. key-value
master# nisaddent -f /etc/auto_home.xfr -t auto_home.org_dir.wiz.com. key-value sales.wiz.com.
nisaddent Syntax Options
Option Description
-a Append. Contents of the source are appended to contents of the table.
-r Replace. Contents of the source replace contents of the table.
-m Merge. Contents of the source are merged with contents of the table.
-d Dump. Contents of the NIS+ table are dumped to stdout.
-v Verbose. The command prints verbose status messages.
-P Follow path. If the command was unable to find a table, follow the search paths specified in the environment variable NIS_PATH.
-A All data. Apply the operation to all the tables in the search path.
-M Master server. Use the tables only in the master server of the domain.
-D Override defaults. For the new data being loaded into the tables, override existing defaults.

For more information, see the command description for nisaddent.


[ Next Article | Previous Article | Book Contents | Library Home | Legal | Search ]