We've noticed that without specifying a timeout to run_cmd, if a remote host is disconnected (due to host network failure, reboot etc), the command never returns and must be force quit.
I propose adding an optional parameter (ex. heartbeat) that if true, will simply check here whether self.is_active and if not raise a ConnectionError.