Я пытаюсь подключиться к экземпляру Amazon EC2 через SSH, используя boto
. Я знаю, что ssh-соединение может быть установлено через некоторое время после создания экземпляра. Поэтому я задаю следующие вопросы:Как проверить, установлено ли соединение SSH с экземпляром AWS
- Могу ли я как-то проверить, есть ли SSH на экземпляре? (если да, то как?)
- Или как я могу проверить выход
boto.manage.cmdshell.sshclient_from_instance()
? Я имею в виду, например, если вывод выводитCould not establish SSH connection
, чем повторите попытку.
Вот что я пытался до сих пор, но не везет:
if instance.state == 'running':
retry = True
while retry:
try:
print 'Connecting to ssh'
key_path = os.path.join(os.path.expanduser('~/.ssh'), 'secret_key.pem')
cmd = boto.manage.cmdshell.sshclient_from_instance(instance,
key_path,
user_name='ec2-user')
print instance.update()
if cmd:
retry = False
except:
print 'Going to sleep'
time.sleep(10)
SSH Connection refused, will retry in 5 seconds
SSH Connection refused, will retry in 5 seconds
SSH Connection refused, will retry in 5 seconds
SSH Connection refused, will retry in 5 seconds
SSH Connection refused, will retry in 5 seconds
Could not establish SSH connection
И, конечно, все работает правильно, потому что я могу запустить тот же код, после того, как некоторое время и получить соединение, и будет иметь возможность использовать cmd.shell()
Спасибо, это очень умный. – Vor