Στην Python, υπάρχει τρόπος να κάνετε ping σε έναν διακομιστή μέσω ICMP και να επιστρέφετε TRUE αν ο διακομιστής απαντήσει ή FALSE αν δεν υπάρχει απάντηση;
Αν δεν χρειάζεται να υποστηρίζετε τα Windows, εδώ είναι ένας πολύ συνοπτικός τρόπος για να το κάνετε:
import os
hostname = "google.com" #example
response = os.system("ping -c 1 " + hostname)
#and then check the response...
if response == 0:
print hostname, 'is up!'
else:
print hostname, 'is down!'
Αυτό λειτουργεί επειδή το ping επιστρέφει μια μη μηδενική τιμή αν η σύνδεση αποτύχει. (Η τιμή επιστροφής στην πραγματικότητα διαφέρει ανάλογα με το σφάλμα του δικτύου.) Θα μπορούσατε επίσης να αλλάξετε το χρονικό όριο ping (σε δευτερόλεπτα) χρησιμοποιώντας την επιλογή '-t'. Σημειώστε, αυτό θα εξάγει κείμενο στην κονσόλα.
1 #!/usr/bin/python
2
3 import os
4 import sys
5 import time
6
7 os.system("clear")
8 home_network = "172.16.23."
9 mine = []
10
11 for i in range(1, 256):
12 z = home_network + str(i)
13 result = os.system("ping -c 1 "+ str(z))
14 os.system("clear")
15 if result == 0:
16 mine.append(z)
17
18 for j in mine:
19 print "host ", j ," is up"
Ένα απλό που μόλις έφτιαξα σε ένα λεπτό..χρησιμοποιώντας το icmplib χρειάζεται δικαιώματα root το παρακάτω λειτουργεί αρκετά καλά! HTH