Özellikle serverda birden fazla site varsa ve kimi siteler domain name degilde ip üzerinden yönetiliyorsa bu yazılım tam size göre :) Büyük serverlarda bug aramada çok yardımcı oluyor.
Kodlar
#!/usr/bin/python
# Name: httpcheck
# Version: 0.1
# Author: intense2k
import sys
import socket
import httplib
import re
import Queue
import thread
import threading
def convert_to_num(ip):
data = ip.split(".")
if len(data) != 4:
return -1
addr = 0
prod = 256 * 256 * 256
for i in range(0, 4):
data[i] = int(data[i])
if data[i] <> 255:
return
addr = addr + prod * data[i]
prod = prod / 256
return addr
def convert_to_ip(num):
tmp = num
quot = 256 * 256 * 256
ip = []
for i in range(0, 4):
a = tmp % quot
b = (tmp - a) / quot
ip.append(str(b))
quot = quot / 256
tmp = a
return '.'.join(ip)
def httpcheck(host, filename, regex, timeout):
global log
socket.setdefaulttimeout(timeout)
try:
sockfd = httplib.HTTPConnection(host)
sockfd.request('GET', filename)
response = sockfd.getresponse()
data = response.read()
if re.compile(regex).search(data):
log.acquire()
print 'http://' + host + filename
log.release()
except:
pass
sockfd.close()
def worker():
global iplist
global filename
global regex
while True:
host = iplist.get()
httpcheck(host, filename, regex, 3)
iplist.task_done()
def main(argv):
global iplist
global regex
global filename
print '\n httpcheck v0.1 - coded by intense2k'
if len(argv) <> '
print ' e.g. : ./httpcheck 192.168.1.1 192.168.1.255 10 /bla.php (a|b)'
return
start = convert_to_num(argv[1])
end = convert_to_num(argv[2])
threads = int(argv[3])
filename = argv[4]
regex = argv[5]
if threads <>'
return
if start == -1 or end == -1:
print ' Invalid IP range given, check your input!'
return
if start > end:
tmp = start
start = end
end = tmp
for i in range(0, threads):
t = threading.Thread(target = worker)
t.setDaemon(True)
t.start()
end = end + 1
for i in range(start, end):
ip = convert_to_ip(i)
iplist.put(ip)
iplist.join()
log = thread.allocate_lock()
iplist = Queue.Queue()
filename = ''
regex = ''
if __name__ == '__main__':
main(sys.argv)
Kullanım da şu şekilde
$ ./httpcheck 62.75.150.80 62.75.150.100 3 /x
kodu olarak çalıştırıldıgında çıktı bu şekilde oluyor
yukardaki kodda gördügünüz gibi 80 ile 100 arası /x url si
çıktıda böyle
http://62.75.150.80/x
http://62.75.150.83/x
http://62.75.150.84/x
http://62.75.150.85/x
http://62.75.150.86/x
http://62.75.150.89/x
http://62.75.150.90/x
http://62.75.150.91/x
http://62.75.150.93/x
http://62.75.150.95/x
http://62.75.150.96/x
http://62.75.150.98/x
http://62.75.150.99/x
HTTP CHECK (Süper)
Author: P.Crew / Etiketler: http check
Kaydol:
Kayıt Yorumları (Atom)
0 yorum:
Yorum Gönder