OK, minor update, after looking some other peoples solutions, I can now get this far, passwd chat = *password* "%n\n" *password* "%n\n" "passwd: all*" gives: [1999/02/12 21:01:33, 10] smbd/chgpasswd.c:dochild(190) Invoking '/usr/bin/passwd simonm' as password change program. [1999/02/12 21:01:34, 100] smbd/chgpasswd.c:talktochild(264) talktochild: chatbuf=[*password*] responsebuf=[New UNIX password: ] [1999/02/12 21:01:34, 100] smbd/chgpasswd.c:talktochild(277) talktochild: sendbuf=[head2toe ] [1999/02/12 21:01:34, 100] smbd/chgpasswd.c:talktochild(264) talktochild: chatbuf=[*password*] responsebuf=[ Retype new UNIX password: ] [1999/02/12 21:01:34, 100] smbd/chgpasswd.c:talktochild(277) talktochild: sendbuf=[head2toe ] [1999/02/12 21:01:38, 100] smbd/chgpasswd.c:talktochild(264) talktochild: chatbuf=[passwd: all*] responsebuf=[] [1999/02/12 21:01:38, 3] smbd/chgpasswd.c:talktochild(267) response 3 incorrect Why would the responsebuf be empty ? surely it should contain something like "passwd: all authentication tokens updated successfully" ? McC