Để phát triển một chương trình tương đương với lệnh ping sử dụng C C++ Python

nhưng vấn đề là khi tôi thêm nó vào trong khi nếu ip đích không thể truy cập được thì nó cũng trả về 0 và 1 theo cách khác [sau một thời gian trễ]

nếu ip có thể truy cập được thì nó có trả về 0 liên tục không

Đây là liên kết tôi đã thử cả quy trình con. gọi cả hai API đều cho cùng một đầu ra

https. //diễn đàn. quy nạp tự động hóa. com/t/script-to-ping-computer/16612/6 Hàm Python để kiểm tra ping

Những gì tôi đã thử

import os
from time import sleep

def add[]:
    print["in add function"]

def sub[]:
    print["in subtract function"]

def ping[]:
    online = os.system["ping -n 1 192.168.0.9"]
    if[online == 0]:
         print["Avilabe with ",online]
         return True
    else:
         print["Ofline with ",online]
         return False

while True:
   add[]
   sleep[0.5]
   if[ ping[]]:
         sub[]
    '''
    do other things if ping is successful
    '''
   sleep[0.5]
any alternative API to get return value when system pinging

Giá trị trả về là từ lệnh ping và sẽ phụ thuộc vào bất kỳ phản hồi nào mà lệnh nhận được. Điều này không liên quan gì đến lập trình Python mà là một tính năng của lệnh ping Windows. Nếu bạn chạy phần sau trong cửa sổ lệnh để kiểm tra.

ping -n 1 192.168.0.9
echo %ERRORLEVEL%

Biến ERRORLEVEL đưa ra kết quả của lệnh trước đó.

Đó là các địa chỉ IP cục bộ, vì vậy chúng tôi không thể sao chép hệ thống chính xác của bạn - điều đó có nghĩa là chúng tôi không thể kiểm tra mã của bạn trong cùng trường hợp như bạn và điều đó có thể liên quan

Vì vậy, nó sẽ tùy thuộc vào bạn.
May mắn thay, bạn có sẵn một công cụ giúp bạn tìm hiểu chuyện gì đang xảy ra. trình gỡ lỗi. Cách bạn sử dụng nó tùy thuộc vào hệ thống biên dịch của bạn, nhưng Google nhanh chóng cho tên của IDE và "trình gỡ lỗi" sẽ cung cấp cho bạn thông tin bạn cần.

Đặt một điểm dừng trên dòng đầu tiên trong hàm và chạy mã của bạn thông qua trình gỡ lỗi. Sau đó, xem mã của bạn và dữ liệu của bạn và tìm ra điều gì sẽ xảy ra theo cách thủ công. Sau đó, từng bước một kiểm tra xem những gì bạn mong đợi sẽ xảy ra chính xác là những gì đã xảy ra. Khi không, đó là khi bạn gặp sự cố và bạn có thể theo dõi lại [hoặc chạy lại và xem xét kỹ hơn] để tìm hiểu lý do tại sao

Xin lỗi, nhưng chúng tôi không thể làm điều đó cho bạn - đã đến lúc bạn học một kỹ năng mới [và rất, rất hữu ích]. gỡ lỗi

Thêm giải pháp của bạn ở đây

 B   I   U   S  small BIG code

Reply from 127.0.0.1, 9 bytes in 0.17ms
Reply from 127.0.0.1, 9 bytes in 0.14ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
0     &  link [^] encode untab case indent outdent

Xem trước 0

thành viên hiện có

hoặc tham gia với chúng tôi

Tải xuống, Bình chọn, Nhận xét, Xuất bản

Email của bạn

Email này đang được sử dụng. Bạn có cần mật khẩu của bạn?

Mật khẩu tùy chọn

Khi trả lời câu hỏi, vui lòng.

  1. Đọc kỹ câu hỏi.
  2. Hiểu rằng tiếng Anh không phải là ngôn ngữ đầu tiên của mọi người, vì vậy hãy khoan dung với lỗi chính tả và ngữ pháp
  3. Nếu một câu hỏi được diễn đạt kém thì hãy yêu cầu làm rõ, bỏ qua nó hoặc chỉnh sửa câu hỏi và khắc phục sự cố. Xúc phạm không được chào đón
  4. Đừng bảo ai đó đọc hướng dẫn. Rất có thể họ có và không nhận được. Đưa ra câu trả lời hoặc chuyển sang câu hỏi tiếp theo
Let's work to help developers, not make them feel stupid.


Nội dung này, cùng với bất kỳ tệp và mã nguồn liên quan nào, được cấp phép theo Giấy phép Mở Dự án Code [CPOL]

PythonPing là cách đơn giản để ping trong Python. Với nó, bạn có thể gửi Đầu dò ICMP đến các thiết bị từ xa giống như cách bạn làm từ thiết bị đầu cuối. PythonPing là mô-đun, do đó bạn có thể chạy nó trong một tập lệnh dưới dạng một chức năng độc lập hoặc tích hợp các thành phần của nó trong một ứng dụng chính thức

Sử dụng cơ bản

Cách sử dụng PythonPing đơn giản nhất là trong một tập lệnh. Bạn có thể sử dụng chức năng

Reply from 127.0.0.1, 9 bytes in 0.17ms
Reply from 127.0.0.1, 9 bytes in 0.14ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
1 để ping mục tiêu. Nếu bạn muốn xem đầu ra ngay lập tức, mô phỏng những gì xảy ra trên thiết bị đầu cuối, hãy sử dụng cờ
Reply from 127.0.0.1, 9 bytes in 0.17ms
Reply from 127.0.0.1, 9 bytes in 0.14ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
2 như bên dưới

from pythonping import ping

ping['127.0.0.1', verbose=True]

Điều này sẽ mang lại kết quả sau

Reply from 127.0.0.1, 9 bytes in 0.17ms
Reply from 127.0.0.1, 9 bytes in 0.14ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
Reply from 127.0.0.1, 9 bytes in 0.12ms

Bất kể chế độ dài dòng là gì, hàm

Reply from 127.0.0.1, 9 bytes in 0.17ms
Reply from 127.0.0.1, 9 bytes in 0.14ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
1 sẽ luôn trả về một đối tượng
Reply from 127.0.0.1, 9 bytes in 0.17ms
Reply from 127.0.0.1, 9 bytes in 0.14ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
1. Đây là một đối tượng có thể lặp lại đặc biệt, chứa danh sách các mục
Reply from 127.0.0.1, 9 bytes in 0.17ms
Reply from 127.0.0.1, 9 bytes in 0.14ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
2. Trong mỗi phản hồi, bạn có thể tìm thấy gói đã nhận và một số thông tin meta, chẳng hạn như thời gian nhận được phản hồi và bất kỳ thông báo lỗi nào

Bạn cũng có thể điều chỉnh ping của mình bằng cách sử dụng một số thông số bổ sung của nó

  • Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    3 là một số nguyên cho phép bạn chỉ định kích thước của tải trọng ICMP mà bạn mong muốn
  • Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    4 là số giây bạn muốn đợi phản hồi, trước khi cho rằng không thể truy cập mục tiêu
  • Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    5 cho phép bạn sử dụng một tải trọng cụ thể [byte]
  • Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    6 chỉ định cho phép bạn xác định số lượng gói ICMP sẽ gửi
  • Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    7 thời gian chờ giữa các lần ping, tính bằng giây
  • Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    8 và
    Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    9 cho phép bạn thực hiện quét ping, bắt đầu từ kích thước tải trọng được xác định trong
    Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    8 và tăng dần đến kích thước được xác định trong
    Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    9. Tại đây, chúng tôi lặp lại tải trọng mà bạn đã cung cấp để phù hợp với kích thước mong muốn hoặc chúng tôi tạo ngẫu nhiên nếu không có tải trọng nào được cung cấp. Lưu ý rằng nếu bạn đã xác định
    Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    3, hai trường này sẽ bị bỏ qua
  • ping -n 1 192.168.0.9
    echo %ERRORLEVEL%
    63 là cờ, nếu được đặt thành True, sẽ bật cờ Không phân mảnh trong tiêu đề IP
  • Reply from 127.0.0.1, 9 bytes in 0.17ms
    Reply from 127.0.0.1, 9 bytes in 0.14ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    Reply from 127.0.0.1, 9 bytes in 0.12ms
    
    2 bật chế độ dài dòng, in đầu ra thành luồng [xem
    ping -n 1 192.168.0.9
    echo %ERRORLEVEL%
    65]
  • ping -n 1 192.168.0.9
    echo %ERRORLEVEL%
    65 là luồng mục tiêu của chế độ dài dòng. Nếu bạn bật chế độ dài dòng và không cung cấp
    ping -n 1 192.168.0.9
    echo %ERRORLEVEL%
    65, đầu ra dài dòng sẽ được gửi tới luồng
    ping -n 1 192.168.0.9
    echo %ERRORLEVEL%
    68. Bạn có thể muốn sử dụng một tập tin ở đây
  • ping -n 1 192.168.0.9
    echo %ERRORLEVEL%
    69 là cờ, nếu được đặt thành True, sẽ cho phép khớp tải trọng giữa yêu cầu ping và phản hồi [hành vi mặc định tuân theo hành vi của Windows, chỉ tính một phản hồi thành công bằng mã định danh gói phù hợp; hành vi của Linux tính tải trọng không tương đương với một kết quả phù hợp . 8. 8. 8 với 1000 byte và câu trả lời bị cắt bớt chỉ còn 74 đầu tiên của tải trọng yêu cầu với số nhận dạng gói phù hợp]

Câu hỏi thường gặp

Tôi có cần chế độ đặc quyền hoặc quyền root không?

Có, bạn cần phải root để sử dụng pythonping

Tại sao tôi cần phải root để sử dụng pythonping?

Tất cả các hệ điều hành đều cho phép các chương trình tạo ổ cắm TCP hoặc UDP mà không yêu cầu các quyền cụ thể. Tuy nhiên, ping chạy trong ICMP [không phải TCP hoặc UDP]. Điều này có nghĩa là chúng ta phải tạo các gói IP thô và đánh hơi lưu lượng trên card mạng. Hệ điều hành được thiết kế để yêu cầu root cho các hoạt động đó. Điều này là do việc có quyền truy cập không hạn chế vào NIC có thể khiến người dùng gặp rủi ro nếu ứng dụng đang chạy có mục đích xấu. Tất nhiên, đây không phải là trường hợp của pythonping, nhưng dù sao chúng ta cũng cần khả năng này để tạo các gói IP tùy chỉnh. Thật không may, đơn giản là không có cách nào khác để tạo các gói ICMP

Sử dụng nâng cao

Nếu bạn muốn mở rộng PythonPing hoặc tích hợp nó trong ứng dụng của mình, chúng tôi khuyên bạn nên sử dụng các lớp là một phần của Python Ping thay vì hàm

Reply from 127.0.0.1, 9 bytes in 0.17ms
Reply from 127.0.0.1, 9 bytes in 0.14ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
Reply from 127.0.0.1, 9 bytes in 0.12ms
1.
from pythonping import ping

ping['127.0.0.1', verbose=True]
21 xử lý giao tiếp với thiết bị đích, nó đảm nhiệm việc gửi yêu cầu ICMP và xử lý phản hồi [lưu ý rằng để đảm bảo an toàn cho luồng, bạn phải xử lý việc tạo ID hạt giống duy nhất cho từng phiên bản luồng, xem ping. _init_ để biết ví dụ về điều này]. Cuối cùng nó tạo ra đối tượng
from pythonping import ping

ping['127.0.0.1', verbose=True]
22.
from pythonping import ping

ping['127.0.0.1', verbose=True]
23 cần biết mục tiêu và tải trọng nào sẽ gửi đến thiết bị từ xa. Vì thế, chúng tôi có một số lớp trong mô-đun
from pythonping import ping

ping['127.0.0.1', verbose=True]
24. Bạn có thể muốn tạo nhà cung cấp của riêng mình bằng cách mở rộng
from pythonping import ping

ping['127.0.0.1', verbose=True]
25. Nếu bạn quan tâm đến điều đó, bạn nên kiểm tra tài liệu của cả mô-đun
from pythonping import ping

ping['127.0.0.1', verbose=True]
26 và
from pythonping import ping

ping['127.0.0.1', verbose=True]
24

Cấu trúc mã

Bố cục thư mục cấp cao nhất

Cấu trúc thư mục dự án của chúng tôi chứa tất cả các tệp src trong thư mục pythonping, các trường hợp thử nghiệm trong một thư mục khác và tài liệu trợ giúp trong thư mục cấp cao nhất

ping -n 1 192.168.0.9
echo %ERRORLEVEL%
6

Sơ đồ UML của cấu trúc mã bên dưới

Theo sơ đồ uml ở trên, năm lớp riêng biệt bên ngoài init tồn tại trong gói này. Executor, Icmp, Payload Provider và Utils. Mỗi người trong số họ dựa trên các thuộc tính đã được liệt kê dưới dạng các lớp con vì lợi ích của sự ngắn gọn. Tổng quan về từng lớp như sau

công dụng

Đơn giản chỉ cần tạo văn bản ngẫu nhiên. Xem chức năng Random_text

Mạng

Mở một ổ cắm để gửi và nhận dữ liệu. Xem các chức năng gửi, recv và del

Nhà cung cấp tải trọng

Tạo Tải trọng ICMP không có Tiêu đề. Đó là chức năng một giao diện. Nó có ba chức năng init, iter và next, tất cả đều được triển khai bởi các lớp con List, Repeat và Sweep lưu trữ các tải trọng trong các danh sách khác nhau

ICMP

Tạo ICMP heaser thông qua lớp con ICMPType và các chức năng trợ giúp khác nhau

người thi hành

Có nhiều lớp con khác nhau bao gồm Tin nhắn, Phản hồi, Thành công và Giao tiếp được sử dụng để gửi các gói icmp và thu thập dữ liệu

Trong đó

Sử dụng mạng, trình thực thi, payload_provider và utils. Random_text để xây dựng và gửi các gói ICMP để ping mạng

bài kiểm tra

Một gói kiểm tra tồn tại trong thư mục kiểm tra và chứa một loạt các bài kiểm tra đơn vị. Trước khi thực hiện các thay đổi, hãy đảm bảo chạy thử nghiệm và đảm bảo rằng tất cả các trường hợp tương ứng đều vượt qua. Đối với chức năng mới, các trường hợp thử nghiệm mới phải được thêm vào và ghi lại

Lệnh ping C là gì?

Một số tùy chọn lệnh ping liên quan đến điều chỉnh hiệu suất như sau. -c. Chỉ định số lượng gói . Tùy chọn này hữu ích khi bạn nhận được nhật ký theo dõi IP. Bạn có thể nắm bắt tối thiểu các gói ping.

Làm thế nào python có thể được sử dụng để ping máy tính mục tiêu?

Bạn có thể sử dụng chức năng ping để ping mục tiêu. Nếu bạn muốn xem đầu ra ngay lập tức, mô phỏng những gì xảy ra trên thiết bị đầu cuối, hãy sử dụng cờ dài dòng như bên dưới. Điều này sẽ tạo ra kết quả sau. Bất kể chế độ dài dòng là gì, chức năng ping sẽ luôn trả về một đối tượng ResponseList.

Cú pháp của lệnh ping là gì?

ping -aAbBdDfhLnOqrRUvV6 -c đếm -F nhãn lưu lượng -i khoảng thời gian -I giao diện -l tải trước -m đánh dấu -M pmtudisc_option -N nodeinfo_option -w thời hạn -W timeout -p pattern -Q tos -s packetsize -S sndbuf -t ttl -T . đích / Cú pháp

Ping có nghĩa là gì trong Python?

Ping phổ biến nhất đề cập đến hành động gửi gói hoặc tín hiệu đến thiết bị khác và lắng nghe phản hồi .

Chủ Đề