Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Flask formatting into HTML
#1
Hello. I have a python script that SSH's (Netmiko) into a Cisco switch, runs an "show interface status" command and outputs it to the screen. When run the script from the CLI the output looks normal on a line by line bases. If I put this same script into a Flask setup, I get the output but the problem is there is no line by line separation as in CLI. It's all crammed together. So my question is, is there a way to format Flask to output it as it does on the CLI but in HTML? Below is my code and the outputs from both CLI and Flask. Thank you in advance.

my_flask_app.py file
from flask import Flask, request
from processing import do_calculation

app = Flask(__name__)
app.config["DEBUG"] = True

@app.route("/", methods=["GET", "POST"])
def adder_page():
    if request.method == "POST":
        number1 = None
        number1 = str(request.form["number1"])
        if number1 is not None:
            result = do_calculation(number1)
            return '''
                <html>
                    <body>
                        {result}
                    </body>
                </html>
            '''.format(result=result)

    return '''
        <html>
            <body>
                <p>Enter switch IP:</p>
                <form method="post" action=".">
                    <p><input name="number1" /></p>
                    <p><input type="submit" value="Check Status" /></p>
                </form>
            </body>
        </html>
    '''
Processing.py file
from netmiko import ConnectHandler


def do_calculation(number1):
    iosv_l2 = {'device_type': 'cisco_ios', 'username': 'user1', 'password': 'password123', 'ip': number1}

    net_connect = ConnectHandler(**iosv_l2)
    result = net_connect.send_command('show int status')
    return result
Output from Flask - not desired
Output:
Port Name Status Vlan Duplex Speed Type Gi0/1 1st Flr AP notconnect 1 auto auto 10/100/1000BaseTX Gi0/2 2nd Flr AP connected trunk a-full a-1000 10/100/1000BaseTX Gi0/3 notconnect 1 auto auto 10/100/1000BaseTX Gi0/4 ESXi Server connected 101 a-full a-100 10/100/1000BaseTX Gi0/5 Ooma VoIP connected 101 a-full a-100 10/100/1000BaseTX Gi0/6 Ring Alarm connected 101 a-full a-100 10/100/1000BaseTX Gi0/7 1st Flr AP connected trunk a-full a-1000 10/100/1000BaseTX Gi0/8 Bench notconnect 101 auto auto 10/100/1000BaseTX Gi0/9 notconnect 1 auto auto 10/100/1000BaseTX Gi0/10 Living Room TV connected 101 a-full a-100 10/100/1000BaseTX Gi0/11 notconnect 1 auto auto 10/100/1000BaseTX Gi0/12 notconnect 1 auto auto 10/100/1000BaseTX Gi0/13 trunk to VM Server connected trunk a-full a-100 10/100/1000BaseTX Gi0/14 notconnect 1 auto auto 10/100/1000BaseTX Gi0/15 to lab-s1 connected trunk a-full a-1000 10/100/1000BaseTX Gi0/16 notconnect 1 auto auto 10/100/1000BaseTX Gi0/17 notconnect 1 auto auto 10/100/1000BaseTX Gi0/18 notconnect 1 auto auto 10/100/1000BaseTX Gi0/19 notconnect 1 auto auto 10/100/1000BaseTX Gi0/20 notconnect 1 auto auto 10/100/1000BaseTX Gi0/21 pfSense Trunk Re0 notconnect 1 auto auto 10/100/1000BaseTX Gi0/22 Office switch connected trunk a-full a-1000 10/100/1000BaseTX Gi0/23 to OPT1 (RE0) on F connected trunk a-full a-1000 10/100/1000BaseTX Gi0/24 to LAN (RE2) on FW connected 101 a-full a-1000 10/100/1000BaseTX Gi0/25 notconnect 1 auto auto Not Present Gi0/26 notconnect 1 auto auto Not Present Gi0/27 notconnect 1 auto auto Not Present Gi0/28 notconnect 1 auto auto Not Present
Output from CLI - desired
Output:
Interface IP-Address OK? Method Status Protocol Vlan1 unassigned YES unset administratively down down Vlan101 192.168.1.2 YES manual up up GigabitEthernet0/1 unassigned YES unset down down GigabitEthernet0/2 unassigned YES unset up up GigabitEthernet0/3 unassigned YES unset down down GigabitEthernet0/4 unassigned YES unset up up GigabitEthernet0/5 unassigned YES unset up up GigabitEthernet0/6 unassigned YES unset up up GigabitEthernet0/7 unassigned YES unset up up GigabitEthernet0/8 unassigned YES unset down down GigabitEthernet0/9 unassigned YES unset down down GigabitEthernet0/10 unassigned YES unset up up GigabitEthernet0/11 unassigned YES unset down down GigabitEthernet0/12 unassigned YES unset down down GigabitEthernet0/13 unassigned YES unset up up GigabitEthernet0/14 unassigned YES unset down down GigabitEthernet0/15 unassigned YES unset up up GigabitEthernet0/16 unassigned YES unset down down GigabitEthernet0/17 unassigned YES unset down down GigabitEthernet0/18 unassigned YES unset down down GigabitEthernet0/19 unassigned YES unset down down GigabitEthernet0/20 unassigned YES unset down down GigabitEthernet0/21 unassigned YES unset down down GigabitEthernet0/22 unassigned YES unset up up GigabitEthernet0/23 unassigned YES unset up up GigabitEthernet0/24 unassigned YES unset up up GigabitEthernet0/25 unassigned YES unset down down GigabitEthernet0/26 unassigned YES unset down down GigabitEthernet0/27 unassigned YES unset down down GigabitEthernet0/28 unassigned YES unset down down
Reply
#2
thanks to @IronMan on StackedOverflow, I needed to use <pre></pre> html tags instead of <p></p> because HTML does not do well with \n. Makes sense and it works!
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Flask - use bootstrap styles in HTML Krayna 1 1,059 Aug-29-2023, 02:33 PM
Last Post: menator01
  show csv file in flask template.html rr28rizal 8 34,754 Apr-12-2021, 09:24 AM
Last Post: adamabusamra
  HTML multi select HTML listbox with Flask/Python rfeyer 0 4,633 Mar-14-2021, 12:23 PM
Last Post: rfeyer
  API auto-refresh on HTML page using Flask toc 2 11,860 Dec-23-2020, 02:00 PM
Last Post: toc
  Python3 + BeautifulSoup4 + lxml (HTML -> CSV) - How to loop to next HTML/new CSV Row BrandonKastning 0 2,364 Mar-22-2020, 06:10 AM
Last Post: BrandonKastning
  [Flask] html error 405 SheeppOSU 0 2,350 Jun-08-2019, 04:42 PM
Last Post: SheeppOSU
  how i save the html form to flask database mebaysan 1 7,301 Feb-07-2019, 12:56 AM
Last Post: snippsat
  Connecting python script into HTML with flask Piqurs 1 16,163 Sep-05-2018, 08:24 PM
Last Post: snippsat

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020