想要从用户处获取IP地址以手动输入(而不是按其位置)

时间:2019-07-10 07:37:48

标签: python html django

这是代码

在forms.py

from django import forms

class CmdForm(forms.Form):
    ip_address = forms.CharField(label='Enter IP address:')
    command = forms.CharField(label='Command to execute:')

在Views.py

from django.shortcuts import render
from first_app.forms import CmdForm
from django.http import HttpResponse

def index(request):
 my_dict = {'insert_me': ""}
 return render(request,'first_app/index.html',context=my_dict)

def form_name_view(request):
   if request.method == "POST":
     form = CmdForm(request.POST)
       if form.is_valid():
        from netmiko import ConnectHandler

        devices = {
        'device_type':'cisco_ios',
        'ip':'ip_address',
        'username':'mee',
        'password':'12345',
        'secret':'12345',

        }
        ipInsert = request.POST.get('ip_address', '')
        cmd = request.POST.get('command', '')
        netconnect = ConnectHandler(**devices)
        #print("connection established with", devices['ip'])
        getIP = netconnect.send_command(ipInsert)
        output = netconnect.send_command(cmd)

        return render(request,'first_app/forms.html', {'form': form, 'output':output, 'getIP':getIP})
       else:
        form = CmdForm()
       return render(request,'first_app/forms.html', {'form': form})
   else:
       return render(request,'first_app/forms.html', {})

但是我遇到错误:-

  

/ Automation_page /上的NetMikoTimeoutException   连接到设备超时:cisco_ios ip_address:22   请求方法:POST   要求网址:http://127.0.0.1:8000/Automation_page/   Django版本:2.2.3   异常类型:NetMikoTimeoutException   异常值:
  连接到设备超时:cisco_ios ip_address:22   例外位置:在created_connection,第864行中的C:\ Users \ karti \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ netmiko \ base_connection.py   Python可执行文件:C:\ Users \ karti \ AppData \ Local \ Programs \ Python \ Python37-32 \ python.exe   的Python版本:3.7.3   Python路径:
  ['K:\ Work \ DevNet \ first_project',    'C:\ Users \ karti \ AppData \ Local \ Programs \ Python \ Python37-32 \ python37.zip',    'C:\ Users \ karti \ AppData \ Local \ Programs \ Python \ Python37-32 \ DLLs',    'C:\ Users \ karti \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib',    'C:\ Users \ karti \ AppData \ Local \ Programs \ Python \ Python37-32',    'C:\ Users \ karti \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages']

为什么我的设备已启动并正在运行,但超时?

感谢那些愿意提供帮助的人! :-)

2 个答案:

答案 0 :(得分:0)

可能是行

'ip':'ip_address',

应阅读

'ip': form.cleaned_data['ip_address'],

答案 1 :(得分:0)

我所做的唯一更改是:-

from netmiko import ConnectHandler
        ipInsert = request.POST.get('ip_address', '')
        devices = {
        'device_type':'cisco_ios',
        'ip':ipInsert,
        'username':'mee',
        'password':'12345',
        'secret':'12345',

        }
        cmd = request.POST.get('command', '')
        netconnect = ConnectHandler(**devices)
        #print("connection established with", devices['ip'])
        getIP = netconnect.send_command(ipInsert)
        output = netconnect.send_command(cmd)

它和我想要的一样工作;-)