O script cria um arquivo ifcfg-eth0:nomeinformado em /etc/sysconfig/network-scripts/
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
def verificaLogin(login_):
"""Verifica o tamanho em caracteres do nome da interface, aparentemente um bug no kernel
não permite adicionar interfaces que tenham o nome com mais de
10 caracteres. por exemplo eth0:nomegrandedainterface """
global login
if len(login_) >=11:
login = login[:10]
return True
return True
def verifica_IP_MASC(ip_masc):
"""Verifica o formato em que o ip ou a máscara foi passado"""
if len(ip_masc.split()) == 0:
return False
elif len(ip_masc.split()) == 1:
ip_masc_l = ip_masc.split(".")
if len(ip_masc_l) == 4:
for n, elemento in enumerate(ip_masc_l):
if n == 0:
try:
if int(ip_masc_l[0]) == 0:
return False
else:
pass
except:
return False
try:
if int(elemento):
pass
except:
return False
return True
else:
return False
else:
return False
def verifica_arquivo(arquivo):
"""Verifica se o arquivo com o nome informado já existe"""
import os.path
if os.path.exists("/etc/sysconfig/network-scripts/ifcfg-eth0:%s" % login):
return False
else:
return True
def validaIP(ip):
"""Verifica se o ip já está sendo utilizado em outra interface"""
import subprocess as sp
processo = sp.Popen(["grep %s /etc/sysconfig/network-scripts/*" % ip], shell=True, stdout=sp.PIPE)
saida = processo.communicate()[0].strip("\n")
if len(saida) > 1:
return False
else:
return True
try:
login, ip, masc = sys.argv[1:]
login_original = login
if verificaLogin(login):
if verifica_IP_MASC(ip):
if validaIP(ip):
if verifica_IP_MASC(masc):
if verifica_arquivo(login_original):
file = open("/etc/sysconfig/network-scripts/ifcfg-eth0:%s" % (login_original), "w")
file.write("DEVICE=eth0:%s\n" % login)
file.write("BOOTPROTO=static\n")
file.write("IPADDR=%s\n" % ip)
file.write("NETMASK=%s\n" % masc)
file.write("ONBOOT=yes\n")
file.close()
print("Interface eth0:%s adicionada!" % login)
else:
print("O arquivo ifcfg-eth0:%s já existe, operação cancelada!" % login_original)
else:
print("Máscara informada inválida! %s" % masc)
else:
print("IP: %s já está sendo utilizado neste servidor!" % ip)
else:
print("IP informado inválido! %s" % ip)
except:
print("Infome login, ip e mascara. Ex: adicionar_ip.py usuario 192.168.0.10 255.255.255.0")
A sintaxe de utilização é simples execute o script conforme exemplo abaixo:
# python adicionar_ip.py Interface IP Máscara
Ou de permissão ao arquivo:
# chmod +x adicionar_ip.py
E execute com o comando:
# ./adicionar_ip.py Interface IP Máscara
Baixe o script aqui
0 comments:
Post a Comment