+ Responder ao Tópico



  1. #1

    Padrão passwd --stdin NÃO FUNCIONA

    Opa galera, estou com um belo problema.

    Estou desenvolvendo um shell script que cria usuários conforme uma lista e seta senha randômica para esses usuários. Bom, o problema é que em uma distribuição Conectiva Linux o script funciona que é uma beleza, mas, no Slackware 10.2, quando uso a tal sintaxe recebo a mensagem do PASSWD: INVALID OPTION --.

    Sitaxe: passwd --stdin $usuario < tmp

    tmp = arquivo onde encontra-se a senha randomica para o usuario.

    Porque invalid option? Será que estou precisando de alguma biblioteca? pacote? o que?

    Conto com a ajuda de vocês.

    Obrigado,

  2. #2

    Padrão passwd --stdin NÃO FUNCIONA

    --stdin
    This option is used to indicate that passwd should read the new
    password from standard input, which can be a pipe.



    bom primeiramente que voce < ou > nao é pipe, pipe é | e afins, se fosse | cat tmp seria melhor.

    agora porque deu erro eu nao sei, verifiquei o man passwd em um conectiva 10 e tem a opcao, jah no freebsd 5.4 nao tem. verifique se o seu possui de fato.



  3. #3
    Visitante

    Padrão passwd --stdin NÃO FUNCIONA

    echo "SENHA" | passwd --stdin $usuario

    Sem erro!

  4. #4

    Padrão passwd --stdin NÃO FUNCIONA

    O que percebi foi que a opção "--stdin" não existe para essa versão do PASSWD só pode! Olha o teste que fiz:

    [email protected]:~# passwd --stdin teste
    passwd: invalid option -- -
    usage: passwd [-fl-s] [name]
    passwd [-x max] [-n min] [-w warn] [-i inact]
    passwd {-l|-u|-d|-S|-e} name

    [email protected]:~#

    Não importa, usando < ou > ou | (pipe), o --stdin não é reconhecido, por isso perguntei se seria necessário a instalação de alguma biblioteca, pacote... Sei lá! To precisando importar 900 usuários que esta num Conectiva 9 para este Slackware 10.2, e isso ta me segurando! ARGH!

    Obrigado pela atenção, conto com a ajuda de vocês.

    Abraço,



  5. #5

    Padrão passwd --stdin NÃO FUNCIONA

    Complicou ....

    O problema é este mesmo, o Slackware não tem opção de --stdin. O que significa que ele usa um pacote ou compilação diferente do Conectiva.

    Vc tem como verificar no man do conectiva (man passwd) que é o autor do passwd usado lá ?

    seria de grande ajuda.

    Você provavelmente terá que recompilar o fonte com a opção do --stdin, mas pelo que imagino, isso tem alguma coisa haver com o PAM.

    Uma pergunta difícil para mim

  6. #6

    Padrão passwd --stdin NÃO FUNCIONA

    Nao querendo dizer que voce esta meio fu... vou te dar uma dica, procure algo sobre a linguagem "Expect" acho que ela vai te ajudar nesse caso.



  7. #7

    Padrão passwd --stdin NÃO FUNCIONA

    [email protected]#$#$%, talvez essa seja a primeira vez que o Slackware me decepciona! Eu querendo evoluir e ele me impedindo! Bom, vamos a caça...

    De qualquer forma, obrigado a todos... Continuo atras de ajuda! HEHE

    Abraço moçada!

  8. #8

    Padrão SOLUÇÃO

    Bom, definitivamente desisti do "passwd --stdin", agora estou usando o MKPASSWD mesmo

    Meu script ficou assim:

    #!/bin/bash
    for usuario in `cat usuarios.txt` ; do
    useradd -m -c $usuario -d /home/$usuario -s /bin/false $usuario
    /usr/bin/mkpasswd $usuario > tmp
    for senha in `cat tmp` ; do
    echo -e "$usuario: $senha" >> usuariosesenhas.doc
    done
    echo -e "$usuario" >> usuariosmailsemformato.txt
    done
    #FIM


    onde,

    usuarios.txt = lista com todos os usuarios separados por linha.
    tmp = arquivo onde ficará armazenado a senha gerada pelo mkpasswd.
    usuariosesenhas.doc = arquivo com usuarios e senhas formatados.
    usuariosmailsemformato.txt = arquivo com usuarios sem formatação.

    O script antigo que usava o passwd --stdin estava assim:

    #!/bin/bash
    for usuario in `cat usuarios.txt` ; do
    useradd -m -c $usuario -d /home/$usuario -s /bin/false $usuario
    echo $RANDOM > tmp
    passwd --stdin $usuario < tmp
    for senha in `cat tmp` ; do
    echo -e "$usuario: $senha" >> usuariosesenhas.doc
    done
    echo -e "$usuario" >> usuariosmailsemformato.txt
    done
    #FIM


    Obrigado a todos...
    MKPASSWD salvou minha vida