Alteração automatica de senha

1. Alteração automatica de senha

bishop
b1sh0p

(usa Slackware)

Enviado em 30/01/2010 - 14:34h

Pessoal i ai blz?


Estou precisando de uma solução para alteração automata de senha sem intervenção do usuário o escopo segue abaixo:

server = servers.txt
user = $users.txt
oldpass = senha_velha
pass = senha_nova

e a partir dai ele vai entrando de server em server alterando a senha.
.achei algumas coisas em relação ao expect mas ate agora nao achei nada que tivesse utilizade nesse caso...


  


2. Re: Alteração automatica de senha

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 31/01/2010 - 12:06h

Sem a intervenção do usuário eu não conheço, mas tem jeito d por a senha dele pra expirar ou forçá-lo a modificar a senha d tempos em tempos. Edite o arquivo /etc/login.defs e lá possui as opções necessárias. Qq coisa:

# man login.defs


3. Re: Alteração automatica de senha

bishop
b1sh0p

(usa Slackware)

Enviado em 31/01/2010 - 14:48h

então velho segue abaixo um exemplo mto bom... mas ainda nao esta rolando e nao sei o pq.




#!/usr/bin/expect

if { $argc != 3 } {
puts "Usage:"
puts "$argv0 username oldpwd newpwd"
exit
}

#set machine [lindex $argv 0]
set username [lindex $argv 0]
set oldpwd [lindex $argv 1]
set newpwd [lindex $argv 2]
set completed_list " "

#-----------------------------------------
# Todas as maquinas sao setadas senhas em:
#-----------------------------------------
set machine_list {
machine1
machine2
machine3
etc
etc
}


#----------------------------------------------------
# Ping maquinas para ver qua delas esta ativa
# Direciona para run_list
#----------------------------------------------------
foreach machine $machine_list {
if { [ catch { exec ping -c 1 $machine } ] == 0 } {
lappend run_list $machine
}
}


proc exclude_list {} {
set count 0
global machine_list run_list
foreach machine $machine_list {
incr count
if { [ lsearch $run_list $machine ] < 0 } {
puts "\t$count)\t$machine"
}
}
puts ""
}

proc include_list {} {
puts "Agora vai tentar alterar a senha nas seguintes maquinas:"
set count 0
global machine_list run_list
foreach machine $run_list {
incr count
puts "\t$count)\t$machine"
}
puts ""
}

proc continue_chk {} {
global run_list
while {1} {
include_list
puts -nonewline "\nVoce gostaria de continuar ou modificar lista?(y/n/m): "
gets stdin ans
if { 1 == [regexp {^y|Y$} $ans] } {
puts "yes"
break
} elseif { 1 == [regexp {^m|M$} $ans] } {
puts -nonewline "\n Entre numero para remover: "
gets stdin ans
set r_num [expr {$ans - 1}]
puts $run_list
set run_list [ lreplace $run_list $r_num $r_num ]
} else {
puts "no"
exit
}
}
}

puts "Falha ao pingar as seguintes maquinas:"
exclude_list

#puts "Agora vai tentar mudar a senha nas seguintes maquinas:"
#include_list

continue_chk

foreach machine $run_list {
set change 0
spawn telnet $machine
while {1} {
expect {
timeout break
"\rlogin:" { sleep 1
send "${username}\r" }
"New password" { send "${newpwd}\r"
lappend completed_list $machine
set change 1 }
"new password" { send "${newpwd}\r"
set change 1 }
"Old password:" { send "${oldpwd}\r" }
"Password:" { send "${oldpwd}\r" }
"\\\$" { if {$change == 0} {
send "passwd\r"
set change 1
} else {
send "exit\r" }
}
"changed" { send "exit\r" }
"closed" { break }
}
sleep 1
}
}

puts " "
puts "Senha alterada com sucesso nas seguintes maquinas:"
foreach machine $completed_list {
puts $machine
}

puts " "
puts "Senha nao foi alterada nas seguintes maquinas:"
foreach machine $machine_list {
if { [ lsearch $completed_list $machine ] < 0 } {
puts $machine
}
}
exit









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts