2011-01-18 5 views
0

Я пишу довольно простое приложение, которое подключается к серверу через SSH (с использованием paramiko), что-то делает и записывает выходные данные на веб-страницу. Я написал сценарий, который хорошо работает, когда я запускаю его из командной строки. Однако, если я запустил его в приложении Django, он не сможет пройти через часть connect.Не удается подключиться к серверу через SSH в приложении Django

SSH подключить часть:

transport = paramiko.Transport((host, port)) 

# application cannot get through this line 
transport.connect(username = '***', password = '***') 

output = ... 

Вид:

def ssh_output(request): 
    return HttpResponse(output) 

Любая идея, почему это вести себя, как это? Есть ли способ исправить это?

+0

вы получите ли сообщение об ошибке? Это ваша полная функция просмотра, потому что «вывод» там не определен. Где ваше соединение ssh запускается? Я думаю, нам нужен еще код и любые ошибки. – Spacedman

ответ

3

Я предполагаю, что ваше приложение Django может работать под другим пользователем, чем пользователь, которому вы выполняете скрипт командной строки. Кроме того, я предполагаю, что это может быть первый случай, когда пользователь приложения Django пытается передать ssh на хост, поэтому он может зависать на каком-то «нормально ли обновлять вопрос// ss/known_hosts».

Похоже, если вы используете SSHClient вместо транспорта, то вы можете установить недостающий ключ политики хоста автоматически добавить недостающие ключи хоста ала

import paramiko 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(your_host, port=your_port, username=your_username, password=your_password) 
Смежные вопросы