Linux Internals Projects for Beginners | 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.
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.
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
- 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
- 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