protected function execute(InputInterface $input, OutputInterface $output)
{
Registry::set('output', $output);
$instance = $input->getArgument('instance');
$repository = new Repository();
$instance = $repository->findEc2Instance($instance);
if (!$instance instanceof Instance) {
throw new \Exception('Could not find instance');
}
$output->writeln('[Found instance: ' . $instance->getDefaultUsername() . '@' . $instance->getConnectionIp() . ']');
$connection = $instance->getSshConnection();
if ($command = $input->getOption('command')) {
$commandObj = new \AwsInspector\Ssh\Command($connection, $command);
if ($input->getOption('print')) {
$output->writeln($commandObj->__toString());
return 0;
}
$res = $commandObj->exec();
$output->writeln($res['output']);
return $res['returnVar'];
}
if ($input->getOption('print')) {
$output->writeln($connection->__toString());
return 0;
}
if ($input->getOption('tunnel')) {
$output->writeln('Establishing tunnel... (CTRL-C to close connection)');
$connection->tunnel($input->getOption('tunnel'));
} else {
$connection->connect();
}
return 0;
}