python - Django - 模板上的 Pysftp 身份验证错误

标签 python django sftp pysftp

我正在尝试解决这个问题,但我不知道如何解决。

我正在 Django 上使用 pysftp。问题是,如果一切顺利,什么也不会发生,但如果我输入了错误的 hostusuarioclave。我仍然收到 Success 而不是 Error。 Something Failed.Authentication Failed 就像我在输入错误的 hostusuario 时打开 Django 控制台一样克拉夫。 如何才能在两个地方都出现 Authentication failed 错误? Django 控制台和 Django Web 应用程序? 谢谢..!!

这是我所拥有的:

def sftp_form(request):
    if request.method == 'POST':
        form = sftpForm(request.POST or None)
        if form.is_valid():
            data = form.cleaned_data
            host = data['host']
            usuario = data['usuario']
            clave = data['clave']
            print host
            print usuario
            print clave
            try:
                SFTP_bajar(host,usuario,clave)
                messages.success(request,' Success')
                return redirect('auth_login')
            except:
                messages.error(request, 'Error. Something Failed.')
    else:
        form=sftpForm()
    return render(request, 'sftp.html', {'form':form})

def SFTP_bajar(host,usuario,clave):
    try:
        transferencia = sftp.Connection(host=host, username=usuario, password=clave)

        remotepath= 'myremotepath'
        localpath="mylocalpath"

        print ('\n' + 'Success')

    except Exception, e:
        print str(e)

最佳答案

不要在 SFTP_bajar 中捕获任何异常

def SFTP_bajar(host,usuario,clave):
    transferencia = sftp.Connection(host=host, username=usuario, password=clave)

    remotepath= 'myremotepath'
    localpath="mylocalpath"

    print ('\n' + 'Success')
    # here do whatever you have to do on your sftp server

然后在 sftp_form View 中更改捕获异常的方式。您绝对不能做的一件事就是像您正在做的那样捕获广泛的异常并忽略它。捕获特定的。

        from pysftp import AuthenticationException

        try:
            SFTP_bajar(host,usuario,clave)
            messages.success(request,' Success')
            return redirect('auth_login')
        except AuthenticationException:
            messages.error(request, 'Authentication failed')
        except :
            import traceback
            traceback.print_exc()

关于python - Django - 模板上的 Pysftp 身份验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41951742/

相关文章:

python - Pandas 时间序列数据的滚动最大值

Python 作为 Windows 看门狗

powershell - 如何从 PowerShell 中的 SFTP 服务器删除早于 x 天的文件

python - 在交互式 shell 中运行 python 脚本与在 Linux(ubuntu 13) 的终端中运行 python 脚本有什么区别?

Python:将逻辑字符串解析为列表列表

django - 如何使用 CreateView 过滤表单字段之一中的查询集值?

python - 如何验证人名? - python / Django

django - update_or_create 与 ManyToManyField

java - 我可以将 JSch 配置为在连接失败时自动重新连接吗?

azure - 我可以将 Azure Key Vault secret 传递到 Azure 逻辑应用程序中的 SFTP 连接器吗?