Тайм-аут сеанса net-ssh

Я использую Net-ssh для запуска удаленного скрипта Python. Сценарий Ruby, кажется, зависает и никогда не завершается, когда скрипту Python требуется много времени для выполнения (около 20 минут).

Я протестировал скрипт, запустив его напрямую, и он завершился без ошибок. Также все отлично работает, когда скрипт выполняется за более короткое время.

Это фрагмент кода, который я использую:

(0..(@number_of_vms - 1)).each_with_index do |vm, i|
  threads << Thread.new do
    Net::SSH.start('ip-address-vm', user, options = ...) do |session|
      cmd = 'python python_script.py'
      output = session.exec!(cmd)
    end
  end
end
threads.each {|thr| thr.join }

Может ли это быть связано с каким-то тайм-аутом сеанса ssh?

РЕДАКТИРОВАТЬ: я убедился, что сценарий успешно завершен на удаленном сервере.


person Rojj    schedule 18.01.2016    source источник
comment
Этот скрипт python записывает какой-либо вывод в стандартный вывод или стандартную ошибку? Куда идет этот вывод, когда вы запускаете скрипт из ruby?   -  person Kenster    schedule 19.01.2016
comment
Да, это так. Он назначен output. Кроме того, у меня есть несколько удаленных файлов журнала.   -  person Rojj    schedule 19.01.2016


Ответы (1)


Проблема была связана с тайм-аутом сервера SSH. Решил проблему изменением настроек на сервере. Я добавил следующую строку:

ClientAliveInterval 60

in /etc/ssh/sshd_config

На основании этой статьи это должно быть возможно сделать аналогичную модификацию на клиенте:

ServerAliveInterval 60

in /etc/ssh/ssh_config

person Rojj    schedule 20.01.2016