Программирование на языке Ruby.

14.9.6. Модуль Etc.

Модуль Etc получает различную информацию из файлов /etc/passwd и /etc/group. Понятно, что полезен он только на платформе UNIX.

Метод getlogin возвращает имя пользователя, от имени которого запущена программа. Если он завершается неудачно, может помочь метод getpwuid (принимающий в качестве необязательного параметра идентификатор пользователя uid).

Myself = getlogin            # hal9000.

Myname = getpwuid(2001).name # hal9000.

# Если параметр не задан, getpwuid вызывает getuid...

Me2 = getpwuid.name          # hal9000.

Метод getpwnam возвращает структуру passwd, которая содержит поля name, dir (начальный каталог), shell (начальный интерпретатор команд) и др.

Rootshell = getpwnam("root").shell # /sbin/sh.

Методы getgrgid и getgrnam ведут себя аналогично, но по отношению к группам. Они возвращают структуру group, содержащую имя группы и т.д.

Итератор passwd обходит все записи в файле /etc/passwd. Запись передается в блок в виде структуры passwd.

All_users = [].

Passwd { |entry| all_users << entry.name }.

Имеется также итератор group для обхода записей в файле /etc/group.