Passwörter mit expect einfüttern
Jump to navigation
Jump to search
es ist eine böse sache, aber manchmal kommt man nicht drum rum passwörter mit einem script zu übergeben.
ich habe hier zwei scripts um mit expect einen befehl eines anderen users zu starten: das passwort wird hier hard codiert (das ist ganz ganz böse :)
#!/usr/bin/expect set password "geheimgeheim" spawn /bin/su - test-user -c "cat testfile" expect "Password:" send "$password\r" expect eof
das passwort wird als parameter ($1) an das script übergeben (das ist auch böse :)
#!/usr/bin/expect set password [lindex $argv 1] spawn /bin/su - test-user -c "cat testfile" expect "Password:" send "$password\r" expect eof
falls das expect script bestandteil eines bash scripts ist, kann man das ganze wie folgt ein ein bash script einpacken:
#!/bin/bash date echo ' #!/usr/bin/expect set password [lindex $argv 1] spawn /bin/su - test-user -c "cat testfile" expect "Password:" send "$password\r" expect eof ' | /usr/bin/expect date
hier noch ein kleines script fuer telnet
#!/usr/bin/expect set user "admin" set password "geheim" spawn telnet router-ip expect "login:" send "$user\r" expect "Password:" send "$password\r" expect "Last" spawn reboot expect eof
mit sudo, passwort abfrage und das ganze in schön ... so gehts
#!/usr/bin/expect -f set timeout 30 set env(TERM) set server [lindex $argv 0] set user [lindex $argv 1] set cmd [lindex $argv 2] set sudo [lindex $argv 3] set prompt "\[.*\@.* .*\]\$" spawn ssh $user@$server expect { "(yes/no)? " { send "yes\r" expect { "assword: " { interact -nobuffer -re "(.*)\r" return } "$prompt" {} } } "assword: " { interact -nobuffer -re "(.*)\r" return } "$prompt" { } } if { $sudo == "1" } { send "sudo su -\r" expect "$prompt" send "$cmd\r" } if { $sudo == "" || $sudo == "0" } { send "$cmd\r" } sleep 0.2 expect "$prompt" { send "exit\r" }
configuration von cisco router auslesen, zB für backup
#!/usr/bin/expect set user "admin" set password "secret!" spawn telnet 10.0.0.20 expect "name:" send "$user\r" expect "word:" send "$password\r" expect "*#" send "ter len 0\r" expect "*#" send "show run\r" expect "*#" send "exit\r"