Linux Internals Projects for Beginners | TCP/IP Remote Management

HomeLinux Internals | Course HomeLinux Internals | ProjectsLinux Internals Project | TCP/IP Remote Management 

Linux Internals Projects for Beginners – TCP/IP Remote Management

About this project

The goal of this Linux Internals Projects for Beginners – TCP/IP Remote Management is to implement a remote network management solution for managing external network devices. 

Share via :

About this project

TYPE Individual project
DIFFICULTY Advanced
ESTIMATED TIME 50 hours
PUBLISHED 15th March, 2021
CONTACT training@emertxe.com

Introduction

Internet today has become a very complex entity by having different set of devices working together. In a scenario where the network devices are located remotely (ex: Wireless base station) monitoring such devices pro-actively becomes a very critical activity. Any malfunctions happen in remote device (ex: CPU usage high, Memory usage high etc…) will result in device crash. In such scenarios diagnosing problems rather than debugging is more critical. Typically, such activities are done from Network Operations Center (NOC) on a 24x7x365 basis. 

 

The goal of this Linux Internals Projects for Beginners project is to create a client-server based approach to get remote diagnostic information. Along with getting information, this will also need to support managing processes in the remote entity by creating or removing them in order to maintain normal system functions. In real time solutions protocols like Simple Network Management Protocol (SNMP) are used. Since this project is implemented in a LAN environment a defined set of operations are implemented. 

 

By the end of this project developer should get a view about Socket Programming, TCP/IP stack working model, Linux commands, Resource management, Resource usage etc.

Requirement Details

Here is the list of requirements that need to be implemented in this project. It consists of functional requirement that need to be implemented in a client-server model. There is also a user interface requirement that need to be implemented to give an interface to the user in order to run this network application. 

Functional Requirements:
  • Client and Server should communicate on TCP
  • Server must be concurrent
  • User should be able to configure port number on which Server will be bound
  • User should be able to configure IP Address & Port on which Server is listening for TCP connection
  • Client after connecting to Server should display a prompt say “Client>”
  • Client should accept all commands at the prompt
  • Following commands have to be supported by Client:
    • get-mem <process-name> – For fetching the memory usage of given process
    • get-cpu-usage <process-name> – For fetching CPU usage of the given process
    • get-ports-used <process-name> – For fetching the socket ports used by given process
    • get-open-fd <process-name> – For fetching the open file descriptors of a given process
    • kill <process-name> – For killing a given process
    • “Up Arrow”/”Down Arrow” for navigating to previous commands
    • history – For displaying the history of commands executed for current session (Maximum of 50 commands).
    • help (Should display available commands)
  • Both Client and Server executables should be generated using single Makefile

User Interface Requirements:
    • Client should provide a bash like prompt, when it starts. 
    • Up-arrow and down arrow should work for previous entered commands (like bash)

Skeleton Code

The skeleton code in a very interesting concept used in Emertxe. By looking into the skeleton code, you will get a clear picture into converting the given requirement into a working solution. This will also take care of important aspects like modularity, clean coding practices, re-usability etc.

 

Sample Output

Here are the sample output expected by the end of project execution.

Linux Internals Projects for Beginners | TCP/IP Remote Management - Output 1
Fig1: Running Server. Run till user terminates
           

 

Linux Internals Projects for Beginners | TCP/IP Remote Management - Output 2
Fig2: The Client Application View
                  

 

Linux Internals Projects for Beginners | TCP/IP Remote Management - Output 3
Fig3: help command view
                          

 

Linux Internals Projects for Beginners | TCP/IP Remote Management - Output 4
Fig4: Remote Request Usage. get-mem command
              

 

Linux Internals Projects for Beginners | TCP/IP Remote Management - Output 5
Fig5: Server Activity
                              

 

Linux Internals Projects for Beginners | TCP/IP Remote Management - Output 6
Fig6: Remote Request Usage. get-ports-used command
       

 

Linux Internals Projects for Beginners | TCP/IP Remote Management - Output 7
Fig7: history command view
Sample Output
  • Fig1: Running Server. Run till user terminates
  •            
  • Fig2: The Client Application View
  •                   
  • Fig3: help command view
  •                           
  • Fig4: Remote Request Usage. get-mem command
  •               
  • Fig5: Server Activity
  •                               
  • Fig6: Remote Request Usage. get-ports-used command
  •        
  • Fig7: history command view
Sample Output
  • Fig1: Running Server. Run till user terminates
  •            
  • Fig2: The Client Application View
  •                   
  • Fig3: help command view
  •                           
  • Fig4: Remote Request Usage. get-mem command
  •               
  • Fig5: Server Activity
  •                               
  • Fig6: Remote Request Usage. get-ports-used command
  •        
  • Fig7: history command view

similar projects