## 4 Web Application to Automate the Configuration of Networking Equipment
### Configuration Modes in Network Equipment  
The executable file Putty with an SSH client is used for secure access to communication equipment and input and output peripherals (monitor and keyboard). This tool allows securely connecting to remote servers and communication equipment through a serial session allowing remote administration of equipment within a data network [61]. The Internetwork Operating System (IOS) is the software used by most Cisco-branded equipment [62]. It is responsible for the management of interfaces, resources, routing, routing, quality of service (QoS), security, etc. There are several modes of operation for \begin{table}
\begin{tabular}{c p{142.3 pt}} \hline \hline
**Programming** & **Definition** \\
**Language/Framework** & It is a computer programming language that is often used to create websites and software, automate tasks, and perform data analysis. Python is a general-purpose language, which means that it can be used to create a variety of programs for different purposes [42; 55]. \\ \hline WTForms & It is a flexible form validation and rendering library for web development in the Python programming language. This library can work with any web framework and any template engine of choice [56]. \\ \hline Netmiko & It is a multivendor Python library that facilitates the process of connecting to network devices through the SSH protocol, allowing better management and administration of network equipment through programs or scripts. In addition, it works with a variety of equipment—for example, Arista vEOS, Cisco ASA, Cisco IOS, Cisco IOS-XR, Cisco SG300, HP Comware7, HP ProCurve, Juniper Junos, and Linux Servers [57]. \\ \hline Flask & It is a framework for a lightweight web application that is developed for easy deployment. Moreover, it is scalable for complex applications, making it one of the most popular Python web application frameworks. Flask makes it easy for the developer to freely choose the tools and libraries he needs [58]. \\ \hline Jinja & It is a modern templating language for Python developers. It is used to create HTML, XML, or other markup formats that are returned to the user via an HTTP request [59]. \\ \hline Bootstrap & It is a giant collection of practical and reusable bits of code written in HTML, CSS, and JavaScript. Additionally, it is a front-end development framework that allows developers and designers to quickly create fully responsive websites [60]. \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Tools used to develop the web application. configuration through the CLI, which are hierarchically structured, and each of them allows specific tasks. The IOS configuration modes are hierarchically defined as follows:  
* User mode (User EXEC)
* Privileged execution mode (Privileged EXEC)
* Global configuration mode
* Specific configuration modes  
To automate the network configurations, Cisco IOS commands were used to manually configure the protocols and services. Table 2 shows the commands that should be configured manually through the CLI and which were automated to be configured more easily through the graphical interface of the designed application. Figure 1 shows the Python code of the application designed for configuring virtual local area networks (VLANs). A VLAN is a collection of network devices or nodes that communicate with each other as if they form a single local area network, but each VLAN is a different network [44]. VLANs are used to segment enterprise networks and divide broadcast domains. To configure VLANs, communication equipment must support the IEEE8202.1Q standard. Figure 2 shows the GUI presented to the user to enter the data required to create a VLAN using the developed web tool. The first field to fill in is the IP address of the computer where the VLAN is to be created. Next, a username and password are entered for the SSH connection to the computer. Next, you add the ID number corresponding to the number of VLANs you want to create. In addition, you add the name corresponding to each VLAN separated by a comma.