Net :: SFTP зависает в среде Apache - PullRequest
1 голос
/ 29 августа 2011

Я обнаружил, что в среде apache не хватает чего-то , что bash должен сделать ssh-запрос.Вопрос в том, есть ли способ принести это что-нибудь или мне нужно запускать SSH / SFTP-запросы из оболочки?

Я запускаю логин sftp с именем пользователя и паролем, используя Net ::: SFTP.Журналы отладки идентичны от оболочки и apache.Разница лишь в том, что

а) тот, что от Apache, работает на порядок медленнее (интересно, почему?) Б) самое главное, он зависает на

sftp: Sending SSH2_FXP_INIT

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

Я использую apache 2.2.3, mod_perl 2.0.4, perl 5.8.8,Net :: SFTP 0,10, OpenSSL 0,9,8.Никакие интересные параметры не отправляются в конструктор Net :: SFTP, просто отладка.

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

В конце концов я обнаружил, что это результат того, что STDIN, STDOUT, привязан к объектам файловых дескрипторов вместо реальных файловых дескрипторов в modperl.Это является причиной основной проблемы.

Указание на / dev / null устраняет ее.Мне все еще нужно найти лучшее решение, чем / dev / null, но этих знаний было бы достаточно для понимания рассматриваемой проблемы.

0 голосов
/ 30 августа 2011

Если у вас есть какая-то программа прослушивания сети, я бы попытался прослушать это соединение и выгрузить данные, которые вы получаете. Решение может быть другим, если вы рассчитываете тайм-аут в определенной части рукопожатия, по сравнению с тем, если происходит какая-то ошибка, возникающая из-за того, что Net :: SFTP ест и не сообщает об этом. Я бы порекомендовал использовать tcpdump, чтобы попытаться это выяснить, поскольку я предполагаю, что вы работаете в системе Linux / BSD.

...