On Thu, May 15, 2008 at 12:00:25PM -0400, Jaime Vargas wrote:
Still doesn't work for me. Below is the modified script and the debug
output.
#!/opt/csw/bin/zsh
set -x
zmodload zsh/zpty
die() {print -r -- $1 >&2; exit 1;}
zpty scppty scp hello.world jvargas@xxxxxxxxxxxxxxxxxxxxxxxxxxx:~/
zpty -t scppty || die "fuck"
zpty -r scppty line "*:" || die "no password asked"
zpty -w scppty "3lp&tbw"
while zpty -r scppty line;
do
result+="$line"$'\n'
done
zpty -d scppty
print $result
I changed my credentials for security. Basically it now hangs
waitng for
password and doesnt' do anything. -- Jaime
nerd% ./zpty-test.zsh
+./zpty-test.zsh:5> zmodload zsh/zpty
+./zpty-test.zsh:10> zpty scppty scp hello.world 'luser@host:~/'
+./zpty-test.zsh:11> zpty -t scppty
+./zpty-test.zsh:12> zpty -r scppty line '*:'
Had you printed $line, you'd have seen something like
"+myscript:", not "Passwd: ".
[...]
+./zpty-test.zsh:14> zpty -r scppty line
[...]
As Peter said, if you don't provide with a pattern to look for,
zpty will look for NL characters.
That last zpty is probably still waiting because so far, it has
only received "Password: " and is waiting for a NL character
that will never come.
So, in your code above, you should wait for something more
specific than just ":":
zpty -r scppty line "assword: " || die "no password asked"
for instance.
--
Stéphane