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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 [2] 3
11  Programación / Scripting / Re: Shell Script en: 23 Enero 2014, 22:52 pm
En un grado superior te mandan hacer estas cosas???
Bufff... como han cambiado los tiempos.

Código
  1. USUARIO=$LOGNAME
  2. FECHA=`date +"%d.%m.%y"`
  3. ls -lrt > ${USUARIO}-${FECHA}

Y como bien dice Hekaly, diciéndote cómo hacerlo no te estamos ayudando, pero es que esto es tan simple que...


Un saludo.
12  Programación / Scripting / Re: Script para organizar Active Directory en: 23 Enero 2014, 07:30 am
Mmm... en Windows no te puedo ayudar mucho, hace un porrón de años que no hago nada en BATCH. Te recomiendo que te instales en tu Windows el Moba Xterm, convierte tu Windows en un Unix standard y funciona de maravilla, desde mi punto de vista mucho mejor que un Cywing de los de toda la vida. Así puedes trabajar en Windows como si estuvieras en un Unix, y tiene muchos plugins y librerías para añadir.

Para recorrer archivos de texto en Unix lo puedes hacer con un montón de mandatos de sistema, los mas utilizados son sed y awk.

Un saludo.
13  Programación / Scripting / Re: Script para organizar Active Directory en: 22 Enero 2014, 20:06 pm
Aunque hay librerías para ello, lo mejor es trabajar con el formato csv (valores separados por coma), que es legible por excel, y es básicamente un archivo de texto plano con valores separados por un delimitador que por defecto es la coma o el punto y coma.
14  Programación / Programación General / Re: Programar quiniela en C. en: 22 Enero 2014, 18:50 pm
Saludos!
Yo creo que a lo que te refieres es a un programa en C que te haga 15 combinaciones en base a dos variables "$EQUIPO_A" y "$EQUIPO_B" de un solo resultado sobre tres posibilidades (1, X y 2), y que ese único resultado se base en algún algoritmo de estadística y probabilidad que necesite entrada de datos por cada equipo, como por ejemplo:

  • Número de partidos jugados
  • Número de victorias
  • Número de goles
  • Número de goles por cada jugador
  • Número de tarjetas amarillas
  • Número de tarjetas rojas
  • Número de faltas
  • Estadio en el que se juega
  • Calidad del césped
  • Condiciones climatológicas
  • Experiencia del árbitro
  • Estado físico de los jugadores
  • Estado mental de los jugadores
  • Etc...

Esto es complicado, tienes que emplear estadísticas basadas en datos históricos que no se si sería fácil de conseguir, quizás si en equipos como el Real Madrid o el Barça, pero imaginate sacar estos datos históricos del "Recreativo de Cuenca"... y las quinielas están compuestas mayoritariamente por equipos de los cuales no hay una información histórica muy accesible.

¿El algoritmo?
Pues no lo sé, supongo que sería un algoritmo complicadísimo, ya que cuantas mas variables entren en juego en un algoritmo mas complicado es, y también mas margen de error. No se si me explico.

Si fuera fácil de hacer, y además tuviera poco margen de error, yo no estaría ahora escribiendo estas líneas, estaría desarrollándolo en cualquier lenguaje de programación y me iría corriendo a echar una quiniela, no se si me explico.

Hacerse se puede hacer, pero puedes morir en el intento.
15  Programación / Scripting / Re: Ayuda con bash! en: 21 Enero 2014, 22:44 pm
Para futuros lectores, esto se puede hacer por ejemplo así:

Código
  1. #!/bin/bash
  2. wget http://www.aemet.es/xml/municipios/localidad_18022.xml
  3. mv localidad_18022.xml datos.xml
  4. lista=$(grep prob_precipitacion datos.xml | head -n 4)
  5.  
  6. VARIABLE=`echo "$lista" | awk -F">" '{print $2}' | awk -F"<" '{print $1}'`
  7.  
  8. echo "$VARIABLE"
  9.  

También puedes hacerlo con cut o con sed.
16  Programación / Scripting / Re: Bash 4.2 en windows sin utilizar maquina virtual? en: 21 Enero 2014, 22:40 pm
Tu solución (¡y vaya pedazo de solución!) se llama nada mas y nada menos que Moba Xterm.

Yo lo uso hace bastantes años y es como tener un Unix en tu Windows, y por cierto, tiene muchas librerías y plugins adicionales.

Un saludo.
17  Programación / Scripting / Re: [?] Bash Script SSH en: 21 Enero 2014, 22:12 pm
Mmm... efectivamente, tienes que tener instalado spawn. Yo para hacer esto que tu dices simplemente uso una conexión SSH o RSH en shell script, tan sencillo como esto:

Código
  1. MAQUINA="123.123.123.123"
  2. echo "Mi Linux remoto es: $(rsh $MAQUINA cat /etc/redhat-release)"

Si quieres hacerlo con SSH en vez de con RSH es igual pero le tienes que pasar password y/o puerto, y mi recomendación es que se lo pases como argumentos, y jamás almacenes un dato así a fuego en un script.

Sin embargo, yo en mi trabajo suelo utilizar mucho mas lenguajes como C o como Tcl para hacer estas cosas, sobre todo si el script ha de interactuar en función de la respuesta del último comando lanzado en remoto, y para ello uso la librería "expect", sobre todo en Tcl, que me gusta un montón, por ejemplo:

lista_maquinas.txt
Código
  1. maquina1
  2. maquina2
  3. maquina3

run.sh
Código
  1. #!/usr/bin/ksh
  2.  
  3. if [ $# -ne 1 ]
  4. then
  5. echo " ERROR: Falta especificar la password de tu usuario personal."
  6. exit
  7. fi
  8.  
  9. for i in `cat lista_maquinas.txt`
  10. do
  11. ./expect.tcl $i $1 > /dev/null 2>&1
  12. done

expect.tcl
Código
  1. #!/usr/bin/expect -f
  2.  
  3. set host [lindex $argv 0]
  4. set password [lindex $argv 1]
  5. set prompt "(%|% | %|~|~ | ~|#|# | #|>|> | >|\\$|\\$ | \\$)$"
  6. spawn ssh $host
  7. expect {
  8. "assword:" {
  9. send "$password\n"
  10. }
  11. -re $prompt {
  12. send "echo \" - Estoy haciendo un \\\"uname\\\": \$(uname)\"\n"
  13. expect -re $prompt
  14. send "banner \"Prueba\"\n"
  15. expect -re $prompt
  16. }
  17. }
  18. set tpid [exp_pid -i $spawn_id]
  19. exec kill -9 $tpid
  20. wait -i $spawn_id

No te asustes con la declaración de la variable prompt en mi ejemplo Tcl, simplemente contemplo todas las posibilidades de prompt que me puedo encontrar en casi cualquier máquina Unix. Espero que te sirva, la verdad es que el Tcl y el Shell Script lo utilizo muchisimo por que es super fácil.

Un saludo.
18  Programación / Scripting / Re: [BASH] Sacar informacion de un archivo en: 21 Enero 2014, 21:48 pm
Para imprimir bloques con un inicio y un fin, incluidos estos, lo que yo suelo usar es el comando sed:

Código
  1. sed -n -e '/10.138.43.65/,/10.138.43.65/p' archivo.txt

Cuidado con el sed si vas a utilizar variables en lugar de texto a fuego, en ese caso usa comillas dobles en lugar de simples, quedaría así:

Código
  1. sed -n -e "/${IP_DE_INICIO}/,/${IP_DE_FIN}/p" archivo.txt

Pruébalo, yo lo utilizo muchísimo en el trabajo.
19  Programación / Scripting / Re: [Reto Bash] It's a dir? en: 21 Enero 2014, 21:17 pm
Se que llego con casi un año de retraso, pero en shell script hay varias maneras de comprobar si existe un fichero, directorio, link o indiferente. Aquí va mi aportación de lo mas simple:

Código
  1. D=/tmp
  2. A=/$D/archivo.txt
  3. L=/$D/link
  4.  
  5. # Para comprobar si es un directorio
  6. if [ -d $D ];then echo "$D es un directorio.";fi
  7.  
  8. # Para comprobar si es un fichero
  9. if [ -f $A ];then echo "$A es un fichero.";fi
  10.  
  11. # Para comprobar si es un link simbólico
  12. if [ -L $L ];then echo "$L es un link simbólico.";fi
  13.  
  14. # Para comprobar simplemente si existe, sea lo que sea, fichero, directorio o link
  15. if [ -e $A ];then echo "$A existe.";fi
20  Programación / Programación C/C++ / Re: Parseo de XML con libxml2 en: 20 Enero 2014, 22:27 pm
Saludos de nuevo, ya he conseguido averiguar cómo funciona mas o menos la librería libxml2, a base de darme cabezazos y probar una y otra vez con la poca/escasa información que hay por ahí. Aquí va el código, he puesto comentarios de lo que he hecho en la función "print_element_names", espero que se entienda:

Código
  1. #include <stdio.h>
  2. #include <libxml/parser.h>
  3. #include <libxml/tree.h>
  4.  
  5. static void print_element_names(xmlNode *a_node)
  6. {
  7. xmlNode *cur_node = NULL;
  8. for (cur_node = a_node; cur_node; cur_node = cur_node->next) {
  9. if (cur_node->type == XML_ELEMENT_NODE) {
  10.  
  11. /* Con este if me quedo solo con los nodos
  12. que contienen el string "serverEntries" */
  13. if (!xmlStrcmp(cur_node->name, (const xmlChar *) "serverEntries")) {
  14.  
  15. /* Con este for parseo cada uno de los atributos
  16. o propiedades de cada nodo, uno a uno, lo convierto
  17. a string y lo almaceno en una variable llamada value */
  18. for(xmlAttrPtr attr = cur_node->properties; NULL != attr; attr = attr->next) {
  19. xmlChar* value = xmlNodeListGetString(cur_node->doc, attr->children, 1);
  20.  
  21. /* Finalmente comparo el nombre del atributo de cada
  22. vuelta del bucle, y si coincide con el string "serverName"
  23. pinto solo el valor */
  24. if (!xmlStrcmp(attr->name, (const xmlChar *) "serverName")) {
  25. printf("%s\n",value);
  26. }
  27. }
  28. }
  29. }
  30. print_element_names(cur_node->children);
  31. }
  32. }
  33.  
  34. int main()
  35. {
  36. xmlDoc *doc = NULL;
  37. xmlNode *root_element = NULL;
  38. const char *Filename = "docs/serverindex.xml";
  39. doc = xmlReadFile(Filename, NULL, 0);
  40. if (doc == NULL)
  41. {
  42. printf("ERROR: No se puede parsear el archivo %s\n", Filename);
  43. } else {
  44. root_element = xmlDocGetRootElement(doc);
  45. print_element_names(root_element);
  46. xmlFreeDoc(doc);;
  47. }
  48. xmlCleanupParser();
  49. return (0);
  50. }

Aún así, como no he experimentado mucho con esta librería, me gustaría que alguien que la controle mejor me dijera si lo que estoy haciendo es la mejor manera, por que no se por que me da que igual se puede simplificar mucho mas y mejor.

Un saludo y gracias de antemano.
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines