Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Argumentos sys.argv[1].split() as string?
#1
Hola a todos,

Estoy atascado en un script. Os intento exponer a ver si me podeis ayudar.

defino lo siguiente antes de entrar en el loop.

cliente, fecha, hora, state, nombre, result, most_repeated = sys.argv[1].split()

timestamp = str(fecha)+' '+' '+str(hora)

    CLIENTE 08-01-2018 08:44:00 1 Prueba1 ALERT 4000 192.168.1.113 ==>> 8.8.8.8:53 ==>> DNS

La ejecución es la siguiente:

    ./script.py "CLIENTE 08-01-2018 08:44:00 1 nombre de la alerta que sea 5000 192.168.1.113 ==>> 8.8.8.8:53 ==>> DNS"

Al meter espacios entre los parametros esto los toma como diferentes parametros como todos sabemos.

Quiero que:

concretamente los campos

    ./script.py "CLIENTE 08-01-2018 08:44:00 1 nombre de la alerta que sea 5000 192.168.1.113 ==>> 8.8.8.8:53 ==>> DNS"

Lo tome como un unico parametro.

Lo he estado formateando con "%s" Pero cuando salgan mas palabras en el nombre de la alerta no funcionará.

Un saludo y gracias de antemano.
Responder
#2
así... en plan sucio:

lista_entrada = sys.argv1.split(' ')   #divido por los espacios

quieres los tres primeros elementos independientes:

lista_final.append(lista_emtrada[0]).... repetir hasta lista_entrada[3] (que es el 1 entes de la alerta).

quieres unir los tres ultimos, que son:

ultim3 = lista_cabecera[len(lista_cabecera)-1] --> el ultimo
ultim2 = lista_cabecera[len(lista_cabecera)-2] --> el penultimo
ultim1 = lista_cabecera[len(lista_cabecera)-3] --> el antepenultimo.

quieres unir estos; variable_temporal = ultim1 + ' ' + ... ultim3 o el orden que quieras. (cuidado que a lo mejor el interprete los puede considerar numeros). haz un str() o repr()

ahora obviamente nos queda el siguiente por la cola (el 5000), que sería

ultim0 = lista_cabecera[len(lista_cabecera)-4]

ahora en un bucle calculas entre lista_cabecera[3] y ultim0, que es lista_cabecera[len(lista_cabecera)-4]; y lo unes todo con join() en una sola cadena.

Una vez hecho el join() vas añadiendo a lista final en el orden que quieras, los elementos que tenemos pendientes (ultim_0....ultim_n)
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)