Sponsored Content
Full Discussion: expect problem
Top Forums Shell Programming and Scripting expect problem Post 302391241 by b1sh0p on Sunday 31st of January 2010 11:53:09 AM
Old 01-31-2010
expect problem

hi all, guys i have a problem in this code...

any help ?


Code:
#!/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

 

10 More Discussions You Might Find Interesting

1. AIX

problem with expect eof

hi guys i have such simple script, which i'm executing on AIX 5.3 #!/usr/local/bin/expect spawn passwd exptest set password 123 expect "*password:*" send "$password\r" expect "*password again:*" send "$password\r" expect eof the output is following: spawn passwd exptest sh:... (4 Replies)
Discussion started by: zoom
4 Replies

2. Shell Programming and Scripting

Expect script problem

Hello all you scripting Gurus, I have an expect script that gets called from an AppleScript Studio app that basically takes arguments for user name, password, and server address and then calls rsync. Everything works wonderfully, EXCEPT (there had to be one of those) if the user name starts... (4 Replies)
Discussion started by: jdyck
4 Replies

3. AIX

Problem with expect.

Hi, I am facing a strange problem while executing a script from a solaris server. This script calls another one to execute "expect" commands on some other 40 servers (all AIX 5200). I am passing username and password to the "expect" script as arguments. My problem is that it is showing the... (4 Replies)
Discussion started by: gsabarinath
4 Replies

4. UNIX for Dummies Questions & Answers

Strange expect problem

Hi I'm writing a script which calls an expect script to retrieve configuration files for network devices. I want to avoid using TFTP to transfer the configs if possible and so I'm redirecting the screen output to a text file. This is the expect script: #!/usr/local/bin/expect set... (2 Replies)
Discussion started by: Ant1815
2 Replies

5. Shell Programming and Scripting

sftp expect timeout problem

hello All, I am doing SFTP using expect. We just change our server from sun solaris 8 to sun solaris 10. The script was working good on sun solaris 8. But it is giving problem on 10. from shell, SFTP is working fine.Please help me. What can be the problem. LIB_sftp_get() { ... (0 Replies)
Discussion started by: mindtee_abhi
0 Replies

6. UNIX for Dummies Questions & Answers

Problem in Expect

Hi Im writing an expect program for automating ftp. Having trouble with mget: expect "ftp>" {send "mget *.txt\r"} expect "mget*?" {send "n\r" ; expect_continue} expect "ftp>" {send "bye\r"} But expect even on ftp prompt "n" gets sent Please help... (1 Reply)
Discussion started by: crackle1985
1 Replies

7. Shell Programming and Scripting

expect script problem

Hi, Have strange problem. When I run an expect script towards a switch, it will not work. $ ./test2 spawn ssh admin@sesafdd101 Password: Last login: Thu Dec 25 13:20:54 2008 from 172.20.96.14 ECN430/330/212 Linux, based on Wind River Linux glibc_small (standard) 2.0 Trying... (1 Reply)
Discussion started by: etxnreg
1 Replies

8. Shell Programming and Scripting

problem with expect

i have written simple expect script but it doesnt work the way that i want can someone suggest wat is the issue? #!/usr/bin/expect spawn ssh abc@abc expect "password:" send "xyz\r" expect "$" send "mkdir hello\r" #sleep 10 #exit 0 output --------------- it does not create directory... (4 Replies)
Discussion started by: bkumar82
4 Replies

9. Shell Programming and Scripting

Problem with expect script

expect { -re "(.*)NEXT PAGE(.*)" { send "\r\n" } exp_continue (0 Replies)
Discussion started by: sagar_1986
0 Replies

10. Shell Programming and Scripting

Bash expect problem

Hey there :) I have a Bash Script and I'm trying to update Roundcube, but theres a user interactive line like: bin/installto.sh /var/www/mail/rc Upgrading from 1.1.3. Do you want to continue? (y/N) I'm trying to avoid this user interaction like this: cd roundcubemail-1.2.1 >/dev/null... (5 Replies)
Discussion started by: Aeris
5 Replies
lassign(n)						       Tcl Built-In Commands							lassign(n)

__________________________________________________________________________________________________________________________________________________

NAME
lassign - Assign list elements to variables SYNOPSIS
lassign list varName ?varName ...? _________________________________________________________________ DESCRIPTION
This command treats the value list as a list and assigns successive elements from that list to the variables given by the varName arguments in order. If there are more variable names than list elements, the remaining variables are set to the empty string. If there are more list elements than variables, a list of unassigned elements is returned. EXAMPLES
An illustration of how multiple assignment works, and what happens when there are either too few or too many elements. lassign {a b c} x y z ;# Empty return puts $x ;# Prints "a" puts $y ;# Prints "b" puts $z ;# Prints "c" lassign {d e} x y z ;# Empty return puts $x ;# Prints "d" puts $y ;# Prints "e" puts $z ;# Prints "" lassign {f g h i} x y ;# Returns "h i" puts $x ;# Prints "f" puts $y ;# Prints "g" The lassign command has other uses. It can be used to create the analogue of the "shift" command in many shell languages like this: set ::argv [lassign $::argv argumentToReadOff] SEE ALSO
lindex(n), list(n), lset(n), set(n) KEYWORDS
assign, element, list, multiple, set, variable Tcl 8.5 lassign(n)
All times are GMT -4. The time now is 03:57 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy