import javax.naming.*;
import java.util.*;

public class NisDemo {

    public static void main(String[] args) throws Exception {
        List<String[]> cs = 
            nisEntries("nis://altair.cs.oswego.edu/cs.oswego.edu");
        for (String[] s : cs)
            System.out.println(Arrays.toString(s));
        List<String[]> cts = 
            nisEntries("nis://natasha.oswego.edu/ACAD");
        for (String[] s : cts)
            System.out.println(Arrays.toString(s));
    }

    static ArrayList<String[]> nisEntries(String url) throws Exception {
        Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY, 
                "com.sun.jndi.nis.NISCtxFactory");
        env.put(Context.PROVIDER_URL, url);
        Context ctx = new InitialContext(env);
        Context passwd = (Context)ctx.lookup("system/passwd");
        NamingEnumeration<Binding> it = passwd.listBindings("");

        // for demo just return all entries in ArrayList
        ArrayList<String[]> list = new ArrayList<String[]>();
        // for demo, just break out fields as array of strings
        while (it.hasMore())
            list.add(it.next().getObject().toString().split(":"));
        return list;
    }

}