#windows #perl #etcpasswd #getpwuid
Вопрос:
Perl имеет несколько встроенных функций для доступа к /etc/passwd в системах Unix (и в других местах, если поддерживается) для получения информации о пользователях и группах. Например,
my $name = getpwuid($uid);
вернет имя пользователя, указанное в идентификаторе пользователя, или отменит определение, если такого пользователя нет.
Если сценарий Perl должен быть переносимым и выполняться в Unices и Windows, как получить доступ к информации о пользователях и группах? ActivePerl, похоже, поддерживает модули User::grent и User::pwent, которые предоставляют доступ по полю к /etc/passwd-даже в Windows. Любопытно, что они не поддерживают встроенные функции getpw* и getgr*. Какие еще существуют альтернативы?
Ответ №1:
Вы могли бы использовать этот Win32::NetAdmin
модуль.
UserGetAttributes
и GroupIsMember
выглядят так, как будто они делают то, что вам нужно.
Ответ №2:
Как ни странно, сборка Interix Perl, которая поставляется вместе со службами Microsoft для Unix, поддерживает getpw* и друзей.