Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 77bbcdfe65
Fetching contributors…

Cannot retrieve contributors at this time

executable file 104 lines (98 sloc) 2.667 kb
#!/usr/local/bin/expect --
#
# A generic password injector.
#
# Copyright (c) 2011 Yahoo! Inc.
# All rights reserved.
#
# Redistribution and use of this software in source and binary forms,
# with or without modification, are permitted provided that the following
# conditions are met:
#
# * Redistributions of source code must retain the above
# copyright notice, this list of conditions and the
# following disclaimer.
#
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the
# following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
# * Neither the name of Yahoo! Inc. nor the names of its
# contributors may be used to endorse or promote products
# derived from this software without specific prior
# written permission of Yahoo! Inc.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
proc respond { pw } {
global pws
if {![info exists pws($pw)]} {
send_user " (autopw) "
stty -echo
expect_user -re "(.+)\n"
stty echo
set pws($pw) \
[exec perl -ne "print pack(q{u}, \$_)" << $expect_out(1,string)]
} else {
send_user " (autopw'ed)"
}
log_user 0
send -- "[exec perl -ne "print unpack(q{u}, \$_)" << $pws($pw)]\n";
log_user 1
}
## main ()
set timeout -1
global pws
eval spawn -noecho $argv
expect {
"assword:" {
respond system
exp_continue
}
"Enter passphrase for " {
respond ssh
exp_continue
}
"Bad passphrase, try again" {
unset pws(ssh)
respond ssh
exp_continue
}
"Enter PEM pass phrase:" {
respond pem
exp_continue
}
"Enter passphrase: " {
respond gpg
exp_continue
}
"y,n,?" {
send -- "y\n"
exp_continue
}
"(y/n)?" {
send -- "y\n"
exp_continue
}
"?,??,q" {
send -- "\n"
exp_continue
}
"(yes/no)?" {
send -- "yes\n"
exp_continue
}
eof {
exit
}
}
Jump to Line
Something went wrong with that request. Please try again.