zpty is a module that allow to create a virtual tty which can be written and read from the script. allowing to deal with command that refuses to get entry from a pipe : smbpasswd, ssh, scp.

to load

zmodload zsh/zpty

Here is an example of code using scp to automatically copy things over the network without asking password and without sharing keys

zpty scppty scp fichier user@IP:~/
zpty -t scppty || echo "fuck" && exit
zpty -r scppty line "*:" || echo "no password asked" && exit
zpty -w scppty "passwd"
while zpty -r scppty line;
    do
        result+="$line"$'\n'
    done
zpty -d scppty
print $result