kamranahmedse / developer-roadmap

Interactive roadmaps, guides and other educational content to help developers grow in their careers.
https://roadmap.sh
Other
293.71k stars 38.81k forks source link

Ping Tracker (IP SCANNER) #7340

Open Ranie2704A opened 1 day ago

Ranie2704A commented 1 day ago

What Roadmap is this project for?

Backend Roadmap

Project Difficulty

Intermediate

Add Project Details

Build a project to admin IPs and make them ping to verify the status. (Package sents - received)

SimardeepSingh-zsh commented 1 day ago

import ping3 from flask import Flask, request, jsonify from flask_sqlalchemy import SQLAlchemy

app = Flask(name) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///ips.db' db = SQLAlchemy(app)

class IPAddress(db.Model): id = db.Column(db.Integer, primary_key=True) address = db.Column(db.String(15), unique=True, nullable=False) status = db.Column(db.String(50), nullable=True)

@app.route('/ping/', methods=['GET']) def ping_ip(ip_address): response_time = ping3.ping(ip_address) if response_time is None: status = f"{ip_address} is unreachable." else: status = f"{ip_address} responded in {response_time} ms."

ip = IPAddress.query.filter_by(address=ip_address).first()
if ip:
    ip.status = status
else:
    ip = IPAddress(address=ip_address, status=status)
    db.session.add(ip)
db.session.commit()

return jsonify({'ip_address': ip_address, 'status': status})

@app.route('/ips', methods=['GET', 'POST']) def manage_ips(): if request.method == 'POST': ip_address = request.json['address'] ip = IPAddress(address=ip_address) db.session.add(ip) db.session.commit() return jsonify({'message': 'IP address added successfully'}), 201 else: ips = IPAddress.query.all() return jsonify([{'address': ip.address, 'status': ip.status} for ip in ips])

if name == 'main': db.create_all() app.run(debug=True)