Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/python3
- # Importar libreria para capturar argumentos pasados al script.
- import sys
- import os
- import subprocess
- # Diccionario con mensajes de error
- mensajes_error = {
- "err_no_command":"Debe ingresar un comando.",
- "err_invalid_command":"Debe ingresar un comando valido.",
- "err_no_servername":"Debe ingresar un nombre para el vhost."
- }
- # Lista con los comandos que utiliza este programa
- comandos = [ 'newhost', 'modhost', 'delhost' , 'test']
- argumentos = sys.argv
- # Validar que haya al menos un argumento pasado al script
- if len(argumentos) < 2:
- print(mensajes_error["err_no_command"])
- exit(1)
- if argumentos[1] == comandos[0]:
- if len(argumentos) < 3:
- print(mensajes_error["err_no_servername"])
- exit(1)
- puerto = 80
- server_name = argumentos[-1]
- document_root = f"/var/www/{server_name}"
- # Procesar parametros
- contador = 0
- for arg in argumentos:
- if arg == "-p":
- puerto = argumentos[contador + 1]
- elif arg == "-d":
- document_root = argumentos[contador + 1]
- contador += 1
- output = f"<VirtualHost *:{puerto}>\n\n\tDocumentRoot {document_root}\n\tServerName {server_name}\n\n</VirtualHost>\n"
- # Escritura de archivo
- try:
- with open(f"/etc/apache2/sites-available/{server_name}.conf", "w") as vhost:
- vhost.write(output)
- print(output)
- except Exception as error:
- print(error)
- # modhost
- elif argumentos[1] == comandos[1]:
- # abrir un archivo '<server_name>.conf'
- # crear la cadena para escribir el fichero con los parametros para puerto y document root
- # sobreescribir el fichero
- print(argumentos[1])
- # delhost
- elif argumentos[1] == comandos[2]:
- # comprobamos la canitdad de argumentos
- if len(argumentos) < 3:
- print(mensajes_error["err_no_servername"])
- exit(1)
- # Si existe el argumento '--delete' se elimnan los ficheros available y enabled
- if argumentos[2] == "--delete":
- try:
- os.remove(f"/etc/apache2/sites-available/{argumentos[-1]}.conf")
- os.remove(f"/etc/apache2/sites-enabled/{argumentos[-1]}.conf")
- except Exception as error:
- print(error)
- finally:
- process_output = subprocess.run(["systemctl", "reload", "apache2"], capture_output=True, text=True)
- process_error = process_output.stderr
- print(process_error)
- else:
- # de lo contrario solo el enabled
- try:
- os.remove(f"/etc/apache2/sites-enabled/{argumentos[-1]}.conf")
- except Exception as error:
- print(error)
- finally:
- process_output = subprocess.run(["systemctl", "reload", "apache2"], capture_output=True, text=True)
- process_error = process_output.stderr
- print(process_error)
- elif argumentos[1] == comandos[3]:
- process_output = subprocess.run(["apache2ctl", "configtest"], capture_output=True, text=True)
- process_error = process_output.stderr
- print(process_error)
- else:
- print(mensajes_error["err_invalid_command"])
- print("\nFin\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement