Como posso verificar se um usuário existe no fantoche?

4

Eu já encontrei alguns exemplos onde posso verificar se uma variável tem um valor específico

if $var == 'somevalue' {
    ...
}

se algo for definido

if defined(Package['somepackage']) {
    ...
}

mas como posso verificar se um usuário existe e falhar se não existir? Seria suficiente saber como usar o resultado de um script ou teste de shell, pois /usr/bin/id -u ${name} >/dev/null 2>&1 é tudo que eu preciso, até mesmo uma checagem se o diretório do usuário existe seria ok.

file e exec não aceitam o parâmetro onlyif , caso contrário, isso não seria um problema

    
por Dehalion 24.01.2013 / 09:42

1 resposta

5

Por que não apenas adicionar um fato e verificar isso?

com minha configuração no fantoche 3, colocaria o seguinte em modules/facts/lib/facter/user_exists_blah.rb

require 'facter'
Facter.add(:user_exists_blah) do
  setcode do
    name = "blah"
    Facter::Util::Resolution.exec("/usr/bin/id -u #{name} 2>/dev/null")
  end
end

E, em seguida, use-o como

if $::user_exists_blah {
}

Uma string vazia é avaliada como false, então você pode apenas usá-la como um booleano

    
por 27.01.2013 / 21:25