The current way we handle network file transfers is rather messy. There are multiple scripts that independently wrap `curl` and `ssh` for file transfers:
1. ~~`vyatta-remote-copy.pl` (used exclusively for tech support file uploads).~~
2. ~~`vyatta-image-tools.pl` contains its own ad hoc routines for `curl` //and// `rsync` for some strange reason even though `vyatta-remote-copy.pl` is available.~~
3. ~~Erstwhile `remote.py` (used for config management).~~
4. ~~`vyatta-save-config.pl` (also used for config management).~~
5. `vyatta-load-user-key.pl` for `loadkey`, which also needs to be more robust.
6. ~~`vyatta-commit-push.pl`.~~
7. `install-image`.
All of them spend a lot of effort figuring out the given protocol and fiddling with host keys.
The solution is writing a single all-Python script as the one-stop solution for all remote transfers in the codebase. Python standard library comes with `ftplib`, which is an adequate FTP client for our needs, although there is nothing for SSH. Paramiko is a well-known, reliable SSH library for Python, suited exactly for this purpose. It would save us from relying on `curl` and herding host keys.
`loadkey` currently breaks on some keys and the rewrite needs to tolerate both bare keys and keys with user/host info.