I have a somewhat similar tool but it doesn't do much besides check for password expiry and do password changes.
It uses pexpect but also multiprocessing and multiprocessing.Queue. I built most of it before we started using Ansible at work, but it is still useful in those places where Ansible is clumsy.