小工具 检测当前未被使用的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()