def ssh_execute(self, ipaddr, username="******", command="ls -al", pkey=None, raise_err=False): try: result = ssh_execute(username, ipaddr, command, pkey) return result except Exception, e: log.error("Can not execute ssh on {0}:{1}".format(ipaddr, e)) if raise_err: raise e
def _vm_login(self): """ login to a VM """ cloudname = self.get_working_cloud_name() if not cloudname: return address = None if self.arguments['--addr']: address = self.arguments['--addr'] else: serverid = self.get_working_server_id(cloudname) if not serverid: return mongo = cm_mongo() serverdata = mongo.servers(clouds=[cloudname], cm_user_id=self.username)[cloudname] serverdata = serverdata[serverid]['addresses'] temp_val = serverdata.keys()[0] serverdata = serverdata[temp_val] for i in serverdata: if i['OS-EXT-IPS:type'] == "floating": address = i['addr'] if address is None: Console.warning("Please assign a public ip to the VM first" "(vm ip (--name=<vmname>|--id=<id>))") return if self.arguments['<command>']: commands = ' '.join(self.arguments['<command>']) try: print(">>>\n") print(ssh_execute(self.arguments['--ln'], address, commands, key=self.arguments['--key'])) except: err = sys.exc_info() Console.error("Can not execute ssh on {0}:{1}".format(address, err)) else: host = "{0}@{1}".format(self.arguments['--ln'], address) option = "-o StrictHostKeyChecking=no " if self.arguments['--key']: call(['ssh', option, '-i', self.arguments['--key'], host]) else: call(['ssh', option, host])