elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Scripting / python: email list from sql query en: 14 Junio 2016, 17:38 pm
Buenas tardes, tengo un script en python que lo utilizo para mandar mail.

A dicho escript lo quiero modificar para que consulte a una base de datos una lista de correos electronicos y mande el mail a los mismos...

El problema es que no se como conformar esa lista de emails para que las acepte el sendmail

Código
  1. # Import smtplib to provide email functions
  2. import smtplib
  3. import sys
  4. import mysql.connector
  5.  
  6. # Import the email modules
  7. from email.mime.multipart import MIMEMultipart
  8. from email.mime.text import MIMEText
  9.  
  10. # Create MySQL conector
  11. Conexion = mysql.connector.connect(user='pepito',password='pepitopepe',
  12.                              host='10.11.12.13',
  13.                              database='HELLO')
  14.  
  15. # Define cursor
  16. cursor=Conexion.cursor()
  17.  
  18. # Create a MySQL Query
  19. # ARGV[2] level of issue elevation
  20. cursor.execute("select email from emails where nivel= '%s'" % sys.argv[2] )
  21.  
  22. # Define email addresses to use
  23. addr_to = cursor.fetchone()
  24. #addr_to   = ['pepito1@tepelandia.com', 'pepito2@pepelandia.com']
  25. addr_from = 'Check@pepelandia.com'
  26.  
  27. # Define SMTP email server details
  28. smtp_server = 'smartrelay.pepelandia.com'
  29.  
  30. # Construct email
  31. msg = MIMEMultipart('alternative')
  32. msg['To'] = ", ".join(addr_to)
  33. msg['From'] = ", ".join(addr_from)
  34. msg['Subject'] = 'Alerta'
  35.  
  36. # Open a plain text file for reading.  For this example, assume that
  37. # the text file contains only ASCII characters.
  38. # ARGV[1] html file to send
  39. fp = open(sys.argv[1], 'rb')
  40.  
  41.  
  42. # Create a text/plain message
  43. msg = MIMEText(fp.read(), 'html')
  44. fp.close()
  45.  
  46.  
  47.  
  48. # Send the message via an SMTP server
  49. s = smtplib.SMTP(smtp_server)
  50. s.sendmail(addr_from, addr_to, msg.as_string())
  51. s.quit()
  52.  


Al ejecutar el cofigo...
Código
  1. Traceback (most recent call last):
  2.  File "SendMail.py", line 48, in <module>
  3.    s.sendmail(addr_from, addr_to, msg.as_string())
  4.  File "/usr/lib64/python2.7/smtplib.py", line 742, in sendmail
  5.    raise SMTPRecipientsRefused(senderrs)
  6. smtplib.SMTPRecipientsRefused: {u'pepito1@pepelandia.com': (550, '#5.1.0 Address rejected.')}

cuando separo el codigo y solo me quedo con la consulta de la DB y veo como me devuelve la lisla de emails...

Código
  1. # Create MySQL conector
  2. Conexion = mysql.connector.connect(user='pepito',password='pepitopepe',
  3.                              host='10.11.12.13',
  4.                              database='HELLO')
  5.  
  6. # Define cursor
  7. cursor=Conexion.cursor()
  8.  
  9. # Create a MySQL Query
  10. cursor.execute("select email from emails where nivel= '%s'" % sys.argv[1] )
  11.  
  12.  
  13. # Define email addresses to use
  14. addr_to = cursor.fetchall()
  15.  
  16. for row in addr_to:
  17.  print(addr_to)
  18.  

resultado de la consulta:
Código
  1. # python get_list.py 1   # el 1 es el parametro que paso para la consulta de SQL
  2. [(u'pepito1@pepelandia.com',), (u'pepito2@pepelandia.com',)]
  3. [(u'pepito1@pepelandia.com',), (u'pepito2@pepelandia.com',)]

evidentemente la lista que estoy pasando esta mal conformada, pero no encuentro como hacer que la lista que arma la consulta quede con los mails solamente separada por comas.

alguien tiene alguna idea?
2  Programación / Scripting / Bash script: variable array en: 11 Junio 2016, 03:07 am
Buenas tardes a todos,

Tengo un problema con la forma en que se asigna valor a una variable de tipo array. Paso a explicar mostrando el codigo:

Código
  1. #Se declara una variable de tipo array y se le asignan 4 valores
  2. declare -a var=('192.168.1.1' 'Planta baja' '192.168.1.2' 'Planta alta')
  3.  
  4. #Se muestra la variable completa
  5. echo "${var[@]}"
  6.  
  7.  

Al ejecutar el codigo, se obtiene el siguiente resultado. Notar que no muestra las comillas simples

Código
  1. 192.168.1.1 Planta baja 192.168.1.2 Planta alta
  2.  


Ahora vamos a lo lindo. Completar la variable con el resultado de una consulta de SQL

Código
  1. #Cadena de conexion
  2. Conexion="mysql -h IP_DB_HOST DBNAME -uUSER -pPASS -e"
  3. #Consulta de SQL
  4. SELECT="SELECT ip,descripcion FROM DB.tabla;"
  5.  
  6. #Se declara la variable de tipo array y se ejecuta la consulta de SQL descartando el encabezado y los errores de la misma
  7. #Luego se agregan comillas simples a cada "row" de la consulta y se quitan saltos de linea..
  8. declare -a query=$($Conexion "$SELECT" -N 2> /dev/null | sed "s/\t/' '/g;s/^/'/;s/$/'/" | sed ':a;N;$!ba;s/\n/ /g')
  9.  
  10.  
  11. #ahora, se imprime en pantalla la variable
  12. echo -e "${query[@]}"
  13.  
  14.  


Al momento de ejecutar el codigo, vemos que se obtiene el mismo resultado, con la diferencia de que ahora si muestra las comillas simples

Código
  1. '192.168.1.1' 'Planta baja' '192.168.1.2' 'Planta alta'
  2.  


Ahora, la explicación del problema...

Necesito pasar la variable como parametro para crear un box de menu utilizando el comando "dialog"

ejemplo:
Código
  1.        exec 3>&1
  2.        selection_menu=$(dialog \
  3.        --backtitle "$BACKTITLE" \
  4.        --title "$1" \
  5.        --clear \
  6.        --cancel-label "Volver" \
  7.        --menu "$2" 0 0 4 \
  8.        "${query[@]}" \                    # aqui es donde se inserta la variable
  9.        2>&1 1>&3)
  10.  

el problema que tengo, es que en el primer ejemplo (donde se crea la variable manualmente), el script funciona perfecto, pero cuando creo la variable y le asigno los valores de la consulta de sql, el comando "dialog" me informa que no se obtuvieron la cantidad de parámetros esperados.

Se que es bastante rebuscada la consulta, pero..... alguna idea?????

Desde ya agradezco su ayuda!

Saludos!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines