você precisa criar usuários com senha, mas o passwd ou smbpasswd são interativos, como resolvo isto?

Postado por gutocarvalho, Sexta-feira, Agosto 8, 2008, 11:17

Vamos supor que tenham te passado uma lista grande de usuários para serem criados no sistema, solicitaram que você o faça cadastrando a senha minhasenha, onde cada usuário ao se logar em sua estação windows, em nosso PDC samba, irá trocá-la no primeiro logon.

olhando a lista passada para o sysadmin

gutocarvalho@defiant:~$ cat lista.txt

fulano.sobrenome
beltrano.sobrenome
ciclano.sobrenome

Para criar usuários no samba, caso você use o backend tbsam, falando de forma simplificanda você precisa fazer dois procedimentos:

primeiro precisamos criar o usuário no sistema, o procedimento abaixo é suficiente.

gutocarvalho@defiant:~$ sudo su

root@defiant:~# useradd fulano.sobrenome -s /bin/false

agora vamos automatizar a coisa, vamos fazer um simples laço (for) usando o bash

root@defiant:~# for i in `cat lista.txt`;do useradd $i -s /bin/false;done

pronto, agora o próximo comando é interativo, ou seja o usuário precisa informar a senha e confirmá-la.

root@defiant:~#  smbpasswd -a fulano.sobrenome
Digite a nova senha UNIX:
Redigite a nova senha UNIX:
passwd: senha  atualizada com sucesso.

como isso é um procedimento cansativo, vamos automatizá-lo também.

Apresento a você, caso ainda não conheça, o EXPECT, que é uma ferramenta UNIX para automação e testes que trabalha com comandos interativos, tais quais, telnet, ftp, ssh, passwd, smbpasswd, etc.

Veja mais informações sobre o expect em http://en.wikipedia.org/wiki/Expect

primeira vamos instalar o expect

root@defiant:~# apt-get install expect

agora vamos criar um script expect chamado expPasswd com o conteúdo abaixo

#!/usr/bin/expect

# autor: guto carvalho
# e-mail: guto@gutocarvalho.net / gutocarvalho@gmail.com
# licença: GNU GPL v2
# descricao: script para setar a senha de usuarios em aplicacoes interativas

# para usar digite: expPasswd usuario senha

spawn smbpasswd -a [lindex $argv 0]
set password [lindex $argv 1]
expect “password:”
send “$password\r”
expect “password:”
send “$password\r”
expect eof

salve o arquivo, e vamos a segunda parte da automatização.

root@defiant:~# export LANG=C

ajustamos a variável de linguagem, pois o expect espera receber a informação password: e depois disto ele vai executar uma ação, se não fizermos o ajuste na variável e se você por acaso utilizar o Ubuntu em Português Tupiniquim, o prompt será diferente, algo como:

root@defiant:~# smbpasswd -a fulano.sobrenone

Digite a nova senha UNIX:
Redigite a nova senha UNIX:
passwd: senha  atualizada com sucesso.

ao invés de

root@defiant:~# export LANG=C
root@defiant:~# smbpasswd -a fulano.sobrenone

Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

bom, entendeu né, variável setada, evitando problemas, agora vamos ao comando.

root@defiant:~# for i in `cat lista.txt`;do expect expPasswd $i minhasenha;sleep 5;done

a saída será algo assim..

spawn smbpasswd -a fulano.sobrenome
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
spawn smbpasswd -a beltrano.sobrenome
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
spawn smbpasswd -a ciclano.sobrenome
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

pronto, missão passada, missão automatizada, missão cumprida!

Este post esta disponível na wiki de forma mais organizada.
http://gutocarvalho.net/mediawiki/index.php/Criando_usuarios_e_setando_senha_com_o_Expect

na próxima não vai precisar suar :)

Continuando o jogo, como você faria em sua linguagem?

Mostra ai, comente!

;)

[]’s
Guto

no forno: gnome unstable 2.21.4, ubuntu hardy heron alpha2, firefox 3.0 beta

Postado por gutocarvalho, Quarta-feira, Dezembro 26, 2007, 10:37

Gnome

Versão: 2.21.4

Para aqueles que gostam do GNOME e acompanham seu desenvolvimento foi lançada a versão 2.21.4 rumo a versão estável 2.22.

Changes

platform - http://download.gnome.org/platform/2.21/2.21.4/NEWS
desktop - http://download.gnome.org/desktop/2.21/2.21.4/NEWS
admin - http://download.gnome.org/admin/2.21/2.21.4/NEWS
bindings - http://download.gnome.org/bindings/2.21/2.21.4/NEWS
devtools - http://download.gnome.org/devtools/2.21/2.21.4/NEWS

Sources

platform sources - http://download.gnome.org/platform/2.21/2.21.4/
desktop sources - http://download.gnome.org/desktop/2.21/2.21.4/
admin sources - http://download.gnome.org/admin/2.21/2.21.4/
bindings sources - http://download.gnome.org/bindings/2.21/2.21.4/
devtools sources - http://download.gnome.org/devtools/2.21/2.21.4/

Ubuntu

Versão: Hardy Heron Alpha2

https://wiki.ubuntu.com/HardyHeron/Alpha2

Get it while it’s hot. ISOs and torrents are available at:

http://cdimage.ubuntu.com/releases/hardy/alpha-2/ (Ubuntu)
http://cdimage.ubuntu.com/kubuntu/releases/hardy/alpha-2/ (Kubuntu)
http://cdimage.ubuntu.com/edubuntu/releases/hardy/alpha-2/ (Edubuntu)
http://cdimage.ubuntu.com/jeos/releases/hardy/alpha-2/ (Ubuntu JeOS)
http://cdimage.ubuntu.com/xubuntu/releases/hardy/alpha-2/ (Xubuntu)
http://cdimage.ubuntu.com/gobuntu/releases/hardy/alpha-2/ (Gobuntu)
http://cdimage.ubuntu.com/ubuntustudio/releases/hardy/alpha-2/ (UbuntuStudio)

Firefox

Versão: 3.0 Beta

http://www.mozilla.com/en-US/firefox/all-beta.html

Aproveite!


Copyright © 2007 gutocarvalho.net. All rights reserved.

Bad Behavior has blocked 356 access attempts in the last 7 days.

Creative Commons Attribution-ShareAlike 2.5 Brazil
Creative Commons Attribution-ShareAlike 2.5 Brazil