خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

چگونه در پایتون یک Ping Sweeper بسازیم

پایتون یک زبان برنامه نویسی همه کاره است که می توانید از آن برای نوشتن انواع مختلف برنامه های کاربردی مبتنی بر رابط کاربری گرافیکی و CLI استفاده کنید. اگر در پایتون تازه کار هستید، هیچ راهی بهتر از کار بر روی پروژه های کوچک برای تقویت یادگیری خود وجود ندارد.

پایتون یک زبان برنامه نویسی همه کاره است که می توانید از آن برای نوشتن انواع مختلف برنامه های کاربردی مبتنی بر رابط کاربری گرافیکی و CLI استفاده کنید. اگر در پایتون تازه کار هستید، هیچ راهی بهتر از کار بر روی پروژه های کوچک برای تقویت یادگیری خود وجود ندارد.

یک نمونه عالی از پروژه پایتون برای نوشتن، پینگ‌سویپر است، یک ابزار کوچک که میزبان‌های شبکه را بررسی می‌کند. این اسکریپت مفاهیم اساسی برنامه نویسی از جمله عبارات چاپی، حلقه ها و توابع را پوشش می دهد.

پینگ سویپر چیست؟

پینگ‌سویپر برنامه‌ای است که آدرس شبکه را به عنوان ورودی می‌پذیرد، میزبان‌های شبکه را پینگ می‌کند و لیست میزبان‌های مرده و زنده را خروجی می‌دهد. این یک راه آسان برای تخمین تعداد میزبان های آنلاین در شبکه شما و یافتن آدرس IPv4 آنها است.

به عنوان یک مبتدی، ایجاد یک پینگ سوییپر یک راه عالی برای یادگیری اصول اولیه پایتون است. این مینی پروژه عملی همچنین درک شما از اصول شبکه را تازه می کند.

پیش نیازهای Ping Sweeper شما

قبل از شروع فرآیند توسعه، باید مطمئن شوید که آخرین نسخه پایتون را در سیستم خود دارید.

با تایپ این دستور در خط فرمان (برای کاربران ویندوز) یا ترمینال (برای سیستم‌های یونیکس/لینوکس) و زدن Enter بررسی کنید که آیا می‌توانید پایتون را اجرا کنید:

python --version

در برخی از سیستم ها، ممکن است لازم باشد اجرا کنید:

python3 --version

این دستور باید نسخه پایتون نصب شده روی سیستم شما را برگرداند. اگر خطای مشابه «python found» را برگرداند، باید Python3 را نصب کنید و سپس مراحل زیر را ادامه دهید.

مطلب مرتبط:   چگونه با استفاده از TypeORM و PostgreSQL یک Nest.js CRUD REST API بسازیم

کدگذاری Ping Sweeper

رویکردهای متعددی برای ساخت این اسکریپت وجود دارد. برخی از شما نیاز به نصب و وارد کردن چندین ماژول دارند. در اینجا، شما یک رویکرد مینیمالیستی را در پیش خواهید گرفت که وابستگی خارجی دیگری به جز ماژول حیاتی سیستم عامل ندارد.

قبل از شروع کدنویسی، الزامات مورد نیاز را تجزیه کنید تا بهتر بفهمید چه عملکردی را باید پیاده سازی کنید. این اسکریپت سه بخش دارد:

  1. آدرس IP ورودی را بپذیرید.
  2. شناسه شبکه را از آدرس IP استخراج کنید.
  3. روی همه هاست های شبکه تکرار کنید و اگر هاست مرده یا زنده است چاپ کنید.

اکنون که تصویر واضحی از گردش کار دارید، اجازه دهید برنامه نویسی را شروع کنیم.

پذیرش و پردازش ورودی

بخش اول اسکریپت به پذیرش ورودی از کاربر و کاهش آدرس IPv4 به سه اکتت اول آن می پردازد. این شناسه شبکه را به ما می دهد:

import os
 
IP = input("[+] Enter the Host IP Address:\t")
print("[+] Starting Ping Sweeper on " + IP)
dot = IP.rfind(".")
IP = IP[0:dot + 1]

تابع input() ورودی کاربر را می پذیرد. می‌توانید از روش rfind() یک رشته برای استخراج شاخص آخرین وقوع نقطه اعشار و ذخیره آن در متغیر نقطه استفاده کنید. آن را با حفظ همه چیز از ورودی تا سمت راست ترین نقطه اعشار دنبال کنید.

اسکن هاست و چاپ وضعیت هاست

شما آدرس شبکه را از IP ورودی گرفته اید. اکنون می توانید تمام مقادیر ممکن را برای هشتگانه IPv4 نهایی تکرار کنید: 1-254. در داخل حلقه for، IP جدید را در متغیر میزبان ذخیره کنید. این IP، IP پایه است که به دنبال آن مقدار متغیر iterator قرار می گیرد. سپس از متد os.system() برای اجرای دستور ping در برابر متغیر میزبان استفاده کنید.

for i in range(1, 255):
    host = IP + str(i)
    response = os.system("ping -c 1 -w 1 " + host + " >/dev/null")
 
    if response == 0:
        print(host + " is up")
    else:
        print(host + " is down")

برای تعیین وضعیت میزبان و تصمیم گیری در مورد آنلاین یا آفلاین بودن آن، مقدار پاسخ را در برابر 0 آزمایش کنید. اگر پینگ با میزبانی غیر پاسخگو مواجه شود، مقدار غیر صفر را برمی‌گرداند. در غیر این صورت، صفر را برمی گرداند تا نشان دهد میزبانی که می تواند به آن برسد.

مطلب مرتبط:   چرا باید C++ را یاد بگیرید؟

می توانید پرچم c و پرچم w را با مقادیر 1 به دستور ping اصلی اضافه کنید. این باعث می شود که فقط یک بسته ارسال کند و برای دریافت پاسخ یک ثانیه صبر کند. نسخه پینگ شما ممکن است از این گزینه ها پشتیبانی کند یا نه. برای بررسی به صفحه مرد پینگ مراجعه کنید.

همچنین باید خروجی را به /dev/null تغییر مسیر دهید تا جزئیات خروجی پینگ مخفی شود. توجه داشته باشید که دستور ping و /dev/null فقط با سیستم های یونیکس یا لینوکس سازگار است. می توانید این اسکریپت را در ویندوز با جایگزین کردن پرچم c با n و >/dev/null با >nul اجرا کنید.

اجرای اسکریپت Ping Sweeper

اجرای اسکریپت جارو

می توانید این اسکریپت را در ترمینال یا از طریق خط فرمان اجرا کنید. یک ترمینال را روشن کنید، به محل اسکریپت بروید و آن را با python3 اجرا کنید:

cd /directory/sweeper/
python3 sweeper.py

یک آدرس IPv4 یا یک زیرشبکه را در ترمینال وارد کنید و پینگ سوییپر باید دست به کار شود و خروجی مورد انتظار را برگرداند.

ایده های پروژه جالب برای پایتون

بدون شک یادگیری دستی بهترین و سریع ترین راه برای یادگیری یک زبان برنامه نویسی است. هرچه روی پروژه های بیشتری کار کنید، بیشتر مفاهیم را درک خواهید کرد، مهارت های اساسی را ایجاد می کنید و نحوه رفع مشکلات را درک خواهید کرد.

اگر ایده های پروژه ای برای کار کردن ندارید، این لیست انتخاب شده از بهترین ایده های پروژه برای پایتون را بررسی کنید.