Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: zpty woes



I got it working. By changing the pattern to '*assword:'. Thanks for the help. -- Jaime


On May 15, 2008, at 1:38 PM, Jaime Vargas wrote:

Still no luck. Am I missing something stupid?

nerd% ./zpty-test.zsh
+./zpty-test.zsh:4> zmodload zsh/zpty
+./zpty-test.zsh:8> zpty scppty scp hello.world 'user@host:~/'
+./zpty-test.zsh:9> zpty -t scppty
+./zpty-test.zsh:10> zpty -r scppty line assword:

#!/opt/csw/bin/zsh
set -x
zmodload zsh/zpty
die() {print -r -- $1 >&2; exit 1;}
zpty scppty scp hello.world user@host:~/
zpty -t scppty || die "fuck"
zpty -r scppty line "assword:" || die "no password asked"
zpty -w scppty "TopSecret"
while zpty -r scppty line;
    do
        result+="$line"$'\n'
    done
zpty -d scppty
print $result

On May 15, 2008, at 1:03 PM, Stephane Chazelas wrote:

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




Messages sorted by: Reverse Date, Date, Thread, Author