Как проверить, установлено ли соединение SSH с экземпляром AWS

Я пытаюсь подключиться к экземпляру Amazon EC2 через SSH, используя boto . Я знаю, что ssh-соединение может быть установлено через некоторое время после создания экземпляра. Поэтому мои вопросы:

  • Могу ли я как-нибудь проверить, есть ли 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()

One Solution collect form web for “Как проверить, установлено ли соединение SSH с экземпляром AWS”

Сообщение «SSH Connection отказано, повторите попытку через 5 секунд», начиная с boto: http://code.google.com/p/boto/source/browse/trunk/boto/manage/cmdshell.py

Первоначально «запуск» просто подразумевает, что экземпляр начал загружаться. Пока sshd не встает, соединения с портом 22 отклоняются. Следовательно, то, что вы наблюдаете, абсолютно необходимо ожидать, если sshd не появляется в течение первых 25 секунд состояния «running».

Поскольку это не предсказуемо, когда sshd подходит точно, и если вы не хотите тратить время, просто определяя постоянный длительный период ожидания, вы можете реализовать свой собственный код опроса, который, например, от 1 до 5 секунд, проверяет, доступен ли порт 22 , Только если он вызывает boto.manage.cmdshell.sshclient_from_instance() .

Простой способ проверить, доступен ли определенный порт TCP определенного хоста через модуль socket :

 import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect(('hostname', 22)) print "Port 22 reachable" except socket.error as e: print "Error on connect: %s" % e s.close() 
  • генерация сериализованных rsa открытых / закрытых ключей от NED Big Ints
  • как получить консольный вывод с удаленного компьютера (ssh + python)
  • Как запустить скрипт Python, который является частью приложения, которое я загрузил в сеансе AWS SSH?
  • PyCharm: настройка удаленных интерпретаторов с несколькими переходами через SSH
  • Процесс Python висит из-за открытых соединений Paramiko ssh
  • Конструктор TypeError возвратил NULL при импорте pyplot в ssh
  • Как удаленно выполнить процесс с помощью python
  • Параллельный SSH в Python
  •  
    Interesting Posts for Van-Lav

    Ошибка с оптимальностью в Iterative Depening Depth Первый алгоритм поиска

    Проверьте, существует ли интернет-соединение в python

    Django query: "datetime + delta" как выражение

    Как подсчитать количество строк в таблице из веб-приложения, используя selenium python webdriver

    Django: Когда настраивать save vs с помощью сигнала после сохранения

    Запуск функции каждые X минут – Python

    Предупреждение о агрегации Pandas (FutureWarning: использование dict с переименованием устарело)

    Lua как язык сценариев общего назначения?

    на каком языке мне нужно писать макросы в LIbre Office Calc?

    Django Rest Framework – отсутствует статический каталог

    Python 2.x – создание статического экземпляра класса в одном классе

    Эффективная память в Python

    Как я могу вычесть или добавить 100 лет в поле datetime в базе данных в Django?

    Контролировать количество подпроцессов, используемых для вызова внешних команд в python

    Передача больше kwargs в функцию, чем первоначально установленная

    Python - лучший язык программирования в мире.