in reply to Login Script

I'd go with Net::SSH and Net::Telnet for the login processes, as others have pointed out.

For file copies, I would consider rsync or cfengine in a pull setup. You can signal the pull on the client so it acts like a push, and it has the advantage that if you update the configuration you can have it automatically propagate. You can do this based on machine classes (e.g. machine "zorro" is in class "bandits") so you know exactly what machines are going to copy your RSA key, for instance. Logs are kept by rsync and cfengine, but you'll find that things will Just Work, and logs will be used very rarely. I can't recommend cfengine enough for the kind of administration you are doing.

Ted