Article View: es.comp.os.linux.programacion
Article #15020Re: Leer líneas de un fichero
From: Oscar Manuel
Date: Sun, 27 Aug 2000 00:00
Date: Sun, 27 Aug 2000 00:00
174 lines
7487 bytes
7487 bytes
"J.A. Gutierrez" wrote:
>
> Oscar Manuel <oscar@omgs.es> wrote:
>
> : #!/bin/bash
> : FECHA=$(date +%d/%m/%y\ %X)
> : RESULT0=/tmp/Omap
> : RESULT=${RESULT0}.ip
> : SQL=/tmp/ip.sql
>
> crear ficheros con nombre predecible en /tmp es un grave
> error y un riesgo de seguridad.
Primero perdón en tardar tanto en responder, pero es que estado "mu
liao"...
Sobre lo que dices, es obvio, pero como estoy en fase de pruebas, no
procede borrar el fichero hasta estar seguro de que todo funciona
correctamente. Cuando todo esté bien, después de procesarlo, lo borro.
Por las pruebas que he hecho, creo que, exagerando, el script tardaría
como mucho un minuto en ejecutarse completamente.
> : NMAP="nmap -n -sP -PI
> : ${X1A}-${X1B}.${X2A}-${X2B}.${X3A}-${X3B}.${X4A}-${X4B} -m $RESULT0 "
>
> uf.
> Juraria que no hace mucho, alguien queria hacer algo parecido
> y ya mande un mensaje sobre como hacerlo usando fping; mucho
> mas simple, efectivo y adecuado...
Creo que era otro thread que también abrí yo, pero como casi todo el
mundo me sugirió nmap, y parece que funciona (salvo lo comentado
después), pues no ví objeción para no usarlo.
> : $NMAP 2 >/dev/null
> : test -f $RESULT0 || exit 1
> : grep Up $RESULT0|awk '{printf "%s\n", $2}'>$RESULT
>
> por lo general cualquier construccion grep exp file | awk puede abreviarse
> como awk '/exp/ {}' file.
Me imaginaba que debía existir algo así. Lo probaré.
> : que una expresión del tipo "X1=X1+1" toma X1 como cadena y no como
> : número, por lo que si antes X1 valía 1, ahora vale la cadena "1+1" en
> : vez de "2". Tras comerme un poco el coco, he descubierto la instrucción
> : "let" que toma el valor como numérico. ¿Podría alguien decirme por qué?
>
> esto tambien lo he contestado n-cientas veces en este grupo;
> la clave esta en aritmetica en sh posix vs. expr en cualquier
> sh.
Pues no lo he visto. Ya por curiosidad, ¿se podría evitar el uso de
"let" poniendo al principio del script "#!/bin/sh" en vez de
"#!/bin/bash"? ¿O no van por ahí los tiros?
> : Por si acaso a alguien le caben dudas, el programa no está ni mucho
> : menos terminado. El código que tengo que meter ahora es en el if,
> : haciendo "algo" si la IP está siendo usada o si no. La intención
>
> de hecho, puedes reescribir todo en perl (me da la impresion
> de que sera mas adecuado para lo que dices y usar, en lugar
> de fping, el modulo de ping ICMP de perl (o si tus maquinas
> tienen el servicio echo, el "ping" a echo, para que tu script
> no requiera privilegios de root)
De hecho, las pruebas las he hecho como usuario y no como root, y aunque
el nmap me da un error diciendo que no puedo usar el ping TCP (o algo
así, no recuerdo bien) sin ser root. Por otro lado, en la red hay de
todo, w9x, NT, 2000, unix, etc...
> : el funcionamento del WOL, pero está claro que en el nmap que hago, al
> : menos la máquina que tengo en mi casa en red se enciende SIEMPRE que se
> : ejecuta el nmap. El problema gordo es que el programa lo quiero diseñar
> : para una red de varios cientos de máquinas, y _bastantes_ tienen tarjeta
> : de red con WOL. He visto que nmap tiene la opción -p para determinar el
> : rango de puertos, así que si alguien puede darme un valor para esta
> : opción (u otra) para evitar el "efecto WOL", se lo agradecería.
>
> no te lies y usa (f)ping, que para eso esta.
> Hacer un escaneo de puertos solo para ver si una IP esta en
> uso o no no es ni eficiente ni adecuado...
> Respecto al WOL, si no lo usas, desactivalo, no?
> (por otra parte, lo de la documentacion del WOL no se por donde
> andara -ni si estara disponible- pero en todo caso no creo
> que se trate de un puerto en concreto, dado que eso supone
> tcp/ip, y con la maquina apagada no hay tcp ni na, solo la
> direccion MAC)
>
> : Como último detalle, me consta que hay máquinas que están protegidas
> : contra el icmp, por lo cual querría saber el método más fiable posible
> : para determinar si esa IP está realmente en uso o no.
>
> pues ahi si que te han fastidiado.
> No deberias permitir que desactivaran la respuesta a icmp; si
> la desactivan y luego hay que buscar formas raras de hacer lo
> mismo, no se consigue nada.
>
> si no, fiable fiable, no hay nada. Piensa que una maquina con
> tcp/ip en realidad no tiene ni por que tener un solo puerto
> escuchando, con lo que el escaneo de puertos tampoco tiene por
> que servirte. Lo dicho: que lo de la respuesta a icmp deberia
> ser obligatorio.
Hay una cuestión un tanto específica, y es que no soy el _administrador_
de la red, y no puedo obligar a que máquinas más o menos críticas o con
servicios estén expuestas (aparte de que primero tendría que
localizarlas). Lo que nosotros administramos son las IPs de la red
local, y el "invento" éste que estoy haciendo es para, en la medida de
lo posible, evitar "tránsfugas". Como la red son muchas máquinas, entre
unas cosas y otras hay IPs "desbocadas", por eso intento hacer un método
lo más fiable posible para saber el uso de esa IP, no sólo en un momento
determinado, sino en general, para que si tengo que asignar una IP,
estar seguro al 100% de que esa IP está libre, porque ya me ha ocurrido
que he asignado IPs que no respondían al ping y luego he visto que eran
problemáticas, ya que seguramente alguna máquina protegida contra el
icmp estaba usando esa IP. Por esto, ¿podría haber algún puerto
"estratégico", alguna opción del nmap, etc para estar 100% seguro del
estado de unas máquinas? De haberlo, en principio iría en un script
bash, aunque si fuera en perl u otro, supongo que se podrá intercalar
una llamada en el script bash (incluso recoger el "exit 0" o
equivalente).
Gracias por tu respuesta.
--
http://counter.li.org registration info:
----------------------------------------
Linux user: 92390 - Linux machine: 39301
|--------------------------------------------|
| Oscar Manuel Gómez Senovilla |
| mailto:oscarsen@BORRARomgs.findhere.com |
| (quita "BORRAR" después de @) |
| (remove "BORRAR" after @) |
| Madrid (España) |
|--------------------------------------------|
Technical Details
Message-ID:
<39A855CA.464E0383@omgs.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<39999EE1.BFBF9AE4@omgs.es> <39A0309D.13EC45A5@omgs.es> <8ntm42$c1v$1@news.unizar.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,1acfdd076705ea7c X-Google-Attributes: gidf86c8,public From: Oscar Manuel <oscar@omgs.es> Subject: Re: Leer líneas de un fichero Date: 2000/08/27 Message-ID: <39A855CA.464E0383@omgs.es> X-Deja-AN: 663052466 Content-Transfer-Encoding: quoted-printable References: <39999EE1.BFBF9AE4@omgs.es> <39A0309D.13EC45A5@omgs.es> <8ntm42$c1v$1@news.unizar.es> X-Accept-Language: es Content-Type: text/plain; charset=iso-8859-1 X-Trace: oscar.omgs.es 967333322 18794 192.168.0.10 (26 Aug 2000 23:42:02 GMT) Organization: Estoy harto de spammers Mime-Version: 1.0 Newsgroups: es.comp.os.linux.programacion