小工具 检测当前未被使用的IP


                                                随便写了个给自己用的,不懂python,乱写了一气,总算能运行
程序运行时检测当前目录下的 ip_list 文件
如果存在 就删除其中正在被使用的ip
如果不存在 就从键盘读取ip段 将检测结果写入ip_list文件
root权限下运行
               
               
                #!/usr/bin/python
import os, commands, sys
ip_file = 'ip_list'
def get_ip_list():
    e = os.path.exists(ip_file)
    L = []; List = []
    if not e:
        print 'Please input the ip section:'
        while True:
            ip = sys.stdin.readline()
            if ip == '': break
            L.append(ip)
        for ip in L:
            for i in range(0,256):
                List.append(ip[0:len(ip)-2]+('%d'%i))
    else:
        ip_list_file = open(ip_file, 'r')
        while True:
            ip = ip_list_file.readline()
            if ip == '': break
            List.append(ip[0:len(ip)-1])
        ip_list_file.close()
    return List;
        
def test_ip_list(ip_list):
    L = []
    for ip in ip_list:
        print 'Now is testint IP: ', ip,
        if test_one_ip(ip) == 'NOT_IN_USE':
            L.append(ip)
            print ' is ok'
        else: print ' is not ok'
    return L
def output_free_ip(free_ip_list):
    ip_list_file = open(ip_file, 'w')
    ip_list_file.truncate(0)
    for ip in free_ip_list:
        ip_list_file.write(ip+'\n')
        ip_list_file.flush()
    ip_list_file.close()
def test_one_ip(ip):
    cmd=''.join(['arping -c 1 ', ip,' | grep \"Unicast\"'])
    p = commands.getoutput(cmd)
    if p != '':
        return 'IN_USE'
    else:
        return 'NOT_IN_USE'
def main():
    output_free_ip(test_ip_list(get_ip_list()))
if __name__ == '__main__':
    main()