Foros del Web » Administración de Sistemas » Unix / Linux »

Programacion shell bin/bash

Estas en el tema de Programacion shell bin/bash en el foro de Unix / Linux en Foros del Web. Hola que tal?? tengo que hacer una practica en shell bash y la verdad que no se por donde cogerla, estoy un poco verde con ...
  #1 (permalink)  
Antiguo 17/02/2010, 12:38
 
Fecha de Ingreso: febrero-2010
Mensajes: 9
Antigüedad: 14 años, 9 meses
Puntos: 0
Programacion shell bin/bash

Hola que tal?? tengo que hacer una practica en shell bash y la verdad que no se por donde cogerla, estoy un poco verde con esto. A ver si me podeis hechar una mano por favor!!!

Bueno la practica es la siguiente:


1 -> Reciba una lista de direcciones IP o nombres de máquina. Por medio de un fichero, indicándolo por el token ”-file”
$ ./ddiez_p2.sh file fichero_hosts

2 -> Por cada máquina, el script debe indicar si contesta
a ping o no. Ninguna otra información debe aparecer en la pantalla.

3 -> En caso de usar la opción ”-file”, el script debe comprobar la existencia del fichero indicado
y que tiene permisos de lectura sobre el mismo.

Mostrar un mensaje de error en caso de que el fichero que se pase como argumento no exista o no tengáis permiso de lectura sobre el mismo.
Por ejemplo, si el fichero "ips.txt" no existe o no tenemos permiso de lectura se mostrará un mensaje como el siguiente:

$ ./p2.sh -file ips.txt
p2: ips.txt Permiso denegado
$

Espero que me podais ayudar y resolver esto. Os lo agradecería muchisimo y de cualquier manera.
  #2 (permalink)  
Antiguo 17/02/2010, 13:19
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: Programacion shell bin/bash

... para dejarte hacer esto, se supone tendrás alguna idea del cómo sea hace. El ejercicio podría sonar complejo, pero en realidad es simple.

1. Recibir parámetros es simple. $1, $2, ... $n
2. Puedes limitar el número de peticiones a enviar, luego simplemente evalúas $? para ver si hubo ping o no.
3. Un simple if al fichero. Para saber el operador mira por acá: http://tldp.org/LDP/Bash-Beginners-G...ect_07_01.html

Y en general: http://tldp.org/LDP/Bash-Beginners-G...tml/index.html

Y ya te dí todas las "respuestas" (contra mi conciencia), si tienes problemas o dudas más puntuales menciónalas.
__________________
I ♥ The Music!

Última edición por maturano; 17/02/2010 a las 17:14 Razón: Corrijo enlace
  #3 (permalink)  
Antiguo 18/02/2010, 12:10
 
Fecha de Ingreso: febrero-2010
Mensajes: 9
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Programacion shell bin/bash

Ya tengo esto del programa ahora solo me falta decir que direcciones contestan al ping. Y mostrar el error del ultimo apartado que no se donde mostrarlo. Otra cosa es saber si todos los datos de cuando hace el ping se pueden eliminar, es decir que directamente me muestre si el fichero existe y en caso de que exista que diga las maquinas que contestan al ping. Lo mas importante es decir que maquinas contestan al ping que lo malo es que no se hacerlo, aqui me quedo atascasdo


#!/bin/bash

#hay que hacer un (ping "Maquina") para comprobar si la maquina contesta

#!/bin/sh


#### Defino una función con todas las operaciones para poder llamarla recursivamente. Las funciones no se ejecutan hasta que no
#### se les llama o invoca

ejecucion(){

clear

FILE=servidores.txt
if [ -f $FILE ]; then
echo el fichero $FILE existe
else
echo No existe el fichero
exit
fi

for direccion in `cat $FILE`

# Realiza un cat del fichero y almacena ciclicamente cada linea en la variable $server. Es decir realiza un for
# tantas veces como lineas tenga servidores.txt y almacena el contenido de la linea en la variable $server. Para cada ejecución
# del for realiza lo que está entre el do y el done.
do

echo
echo Realizo un ping a la maquina $direccion
echo
ping -w 1 $direccion


### Manda 1 paquete de trafico icmp al destino almacenado en server.

done
}

ejecucion

#### Esta llamada externa es la que se va a ejecutar la primera vez
  #4 (permalink)  
Antiguo 18/02/2010, 13:47
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: Programacion shell bin/bash

Cita:
Iniciado por danihj Ver Mensaje
Y mostrar el error del ultimo apartado que no se donde mostrarlo.
Aquí no entiendo qué quieres decir con eso.

Cita:
Iniciado por danihj Ver Mensaje
Otra cosa es saber si todos los datos de cuando hace el ping se pueden eliminar
Simplemente redirecciona la salida --a /dev/null--.


Cita:
Iniciado por danihj Ver Mensaje
Lo mas importante es decir que maquinas contestan al ping que lo malo es que no se hacerlo, aqui me quedo atascasdo
Te dije una manera más que simple:

Cita:
Iniciado por maturano Ver Mensaje
2. (...) luego simplemente evalúas $? para ver si hubo ping o no.
http://tldp.org/LDP/Bash-Beginners-G...#sect_03_02_05

Pues ya casi lo tienes .

[OT]
Por favor, los MP no son necesarios, por el contrario, resultan molestos. Esto es un foro.
__________________
I ♥ The Music!
  #5 (permalink)  
Antiguo 18/02/2010, 17:04
 
Fecha de Ingreso: febrero-2010
Mensajes: 9
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Programacion shell bin/bash

Mostrar un mensaje de error en caso de que el fichero que se pase como argumento no exista o no tengáis permiso de lectura sobre el mismo.
Por ejemplo, si el fichero "ips.txt" no existe o no tenemos permiso de lectura se mostrará un mensaje como el siguiente:

$ ./p2.sh -file ips.txt
p2: ips.txt Permiso denegado
$


Me falta esto!!! Muchas gracias otra vez por todo!!!!
  #6 (permalink)  
Antiguo 18/02/2010, 17:17
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: Programacion shell bin/bash

Cita:
Iniciado por danihj Ver Mensaje
Mostrar un mensaje de error en caso de que el fichero que se pase como argumento no exista o no tengáis permiso de lectura sobre el mismo.
Un simple if sobre el archivo pasado como argumento. Ya estás haciendo algo similar:

Cita:
Iniciado por danihj Ver Mensaje
FILE=servidores.txt
if [ -f $FILE ]; then
echo el fichero $FILE existe
else
echo No existe el fichero
exit
fi
Aunque no es del todo correcto. Existe un operador que ve que sea un archivo leíble y no es -f .

Si el problema es en recibirlo como argumento desde línea de comandos, ya lo dije:
Cita:
Iniciado por maturano Ver Mensaje
1. Recibir parámetros es simple. $1, $2, ... $n
Y me remito de nuevo al último enlace que dejé.

.... y, dicho sea de paso, no entiendo que todo tenga que estar dentro de una función.
__________________
I ♥ The Music!
  #7 (permalink)  
Antiguo 06/04/2011, 10:59
 
Fecha de Ingreso: abril-2011
Ubicación: La Vera, San Juan de la Rambla
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Programacion shell bin/bash

hola buenas tardes, aprovechando este tema de programación en bash, yo tambien tengo una duda en una actividad, a ver si me pueden ayudar.
Necesito mostrar todos los ficheros de todos los usuarios del sistema ordenados por el tamaño real que ocupan dichos ficheros y se deben mostrar el listado global a partir del directorio actual.
Gracias por la ayuda de antemano.

Etiquetas: programacion, shell
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:17.