[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Tips: change password on a host list



 
    
change password on a host list:

#!/usr/bin/expect -f

if {[llength $argv] == 0} {
        puts "Usage: chpw \[/c] /u username /o old_password /n new_password host
1 host2 ..." 
        exit 1
}

set pwchallenge 0

while {[llength $argv] > 0} {
        set flag [lindex $argv 0]
        switch -- $flag \
          "/u" {
                set username [lindex $argv 1]
                puts "Username: $username"
                set argv [lrange $argv 2 end]
        } "/o" {
                set oldpasswd [lindex $argv 1]
                puts "Old password: $oldpasswd"
                set argv [lrange $argv 2 end]
        } "/n" {
                set newpasswd [lindex $argv 1]
                puts "New password: $newpasswd"
                set argv [lrange $argv 2 end]
        } "/c" {
                set pwchallenge 1
                puts "Password challenge: $pwchallenge"
                set argv [lrange $argv 1 end]
        } default {
                set hostlist [lrange $argv 0 end]
                break
        }
}

foreach host $hostlist {
        puts "Hostname: $host"

        # spawn ssh $username@$host passwd
        spawn ssh $username@$host 

        expect "password: \r"
        sleep 2s
        send "$oldpasswd\r"
        sleep 10s
        expect "*\r"
        sleep 2s
        send "passwd\r"
        expect "password: \r"
        sleep 2s
        send "$oldpasswd\r"

        if {$pwchallenge} {
                expect "*Enter choice here (q to quit): \r"
                sleep 2s
                # To pick your password (p)
                send "p\r"
        }

        expect "password: \r"
        sleep 2s
        send "$newpasswd\r"
        expect "password: \r"
        sleep 2s
        send "$newpasswd\r"
        expect eof
}

Google