script ficheros [bash]

Iniciado por andaluz, 16 Febrero 2012, 13:43 PM

0 Miembros y 1 Visitante están viendo este tema.

andaluz

hola a todos me gustaría que me ayudasen a resolver el siguiente script:

Se pide construir un script que pida al usuario una ip me devuelva el sitio web al que apunta y el puerto por el que se conecta. Por Ej: Si el usuario introduce la ip 10.0.0.10, el script debe devolver: www.sitio3.com 8080.
En caso de que la ip dada no exista deberá devolver el mensaje: "IP NO REGISTRADA."

los ficheros son los siguientes:

ips.txt
--------
192.168.0.10 www.sitio01.net
172.26.0.10 www.sitio2.org
10.0.0.10 www.sitio3.com
192.168.10.5 www.sitio4.es

puertos.txt
----------
www.sitio01.net 80
www.sitio2.org 8008
www.sitio3.com 8080
www.sitio4.es 8000

el script que yo he realizado es el siguiente:
Código (bash) [Seleccionar]

#!/bin/bash

echo "elegimos la ip de la que queremos saber el puerto: "
cat ./ips.txt
echo ""

echo "Introduce una IP para saber su puerto: "
read ip
echo "IP: "$ip

buscar_ip=$(cat ./ips.txt | grep -n '^'$ip'$' | cut -d " " -f 1)

puerto=$(head -$buscar_ip puertos.txt | tail -1)
echo "puerto: "$puerto


Se que no es un script complicado, pero no consigo resolverlo

Saludos

andaluz

ya lo tengo casi resuelto

Código (bash) [Seleccionar]

#!/bin/bash

lin_ip=$(wc -l ./ips.txt | cut -d  " " -f 1)
lin_puert=$(wc -l ./puertos.txt | cut -d  " " -f 1)
echo "IP: "$lin_ip
echo 'Puert: '$lin_puert

echo "elegimos la ip de la que queremos saber el puerto: "
cat ./ips.txt
echo ""

echo "Introduce una IP para saber su puerto: "
read ip
echo "IP: "$ip

buscar_ip=$(cat ./ips.txt | grep -c '^'$ip'$' | cut -d " " -f 1 ./ips.txt)
buscar_direc_ip=$(cat ./ips.txt | grep -c '^'$ip'$' | cut -d " " -f 2 ./ips.txt)
buscar_puerto=$(cat ./puertos.txt | grep -c '^'$ip'$' | cut -d " " -f 1 ./puertos.txt)
buscar_puerto_puerto=$(cat ./puertos.txt | grep -c '^'$ip'$' | cut -d " " -f 2 ./puertos.txt)
echo "buscar_ip: "$buscar_ip
echo "buscar_direc_ip: "$buscar_direc_ip
echo "buscar_puerto: "$buscar_puerto
echo "buscar_puerto_puerto: "$buscar_puerto_puerto

for i in $(seq $i $lin_ip)
do
   if [ "$lin_ip" = "$i" ]
   then
       ii=$(head -$i ./puertos.txt | tail -1 | cut -d " " -f 2)
       echo "ii: "$ii
   fi
done


el único inconveniente es que siempre me muestra el ultimo puerto, no el que yo elijo, me pueden ayudar a terminar de solucionarlo,

saludos

andaluz