Shell

Páginas: 10 (2336 palabras) Publicado: 14 de enero de 2011
Ejercicios de programaci´n en shell bash o Dise˜o y Administraci´n de Sistemas y Redes n o Quinto curso de Ingenier´ Inform´tica, Universidad Rey Juan Carlos ıa a

Ejercicio 1
Tenemos un laboratorio de PCs donde cada ordenador tiene un fichero /etc/hosts que indica los nombres y direcciones IP de las dem´s m´quinas. a a El fichero ser´ similar a este: a

212.128.4.203 212.128.4.204212.128.4.209 212.128.4.210 212.128.4.211 212.128.4.212 212.128.4.213

a202e33.escet.urjc.es a202e34.escet.urjc.es a202e39.escet.urjc.es a202e40.escet.urjc.es gamma01.escet.urjc.es gamma02.escet.urjc.es gamma03.escet.urjc.es

a202e33 a202e34 a202e39 a202e40 gamma01 gamma02 gamma03

Vamos a cambiar de direcci´n las m´quinas gammaNN (donde NN es el n´mero del ordenador). La o a u nueva direcci´n de cadam´quina ser´ o a a 192.168.0.YY donde YY= NN+40 Haz un script de shell que muestre por salida est´ndar el nuevo fragmento de /etc/hosts. a Para el fichero visto anteriormente, la salida ser´ ıa: 192.168.0.41 gamma01.escet.urjc.es gamma01 192.168.0.42 gamma02.escet.urjc.es gamma02 192.168.0.43 gamma03.escet.urjc.es gamma03 Nota: No sabemos cu´ntos PCs hay. No podemos suponer que el fichero est´ordenado. Puede haber a e huecos en la numeraci´n (p.e. que exitan el gamma04 y gamma06 pero falte el gamma05) o

Soluci´n o
#!/bin/bash fichero_entrada=/etc/hosts maquinas=$(grep gamma $fichero_entrada | cut -c44-45 ) for nn in $maquinas do yy=$(($nn+40)) echo 192.168.0.$yy done

gamma$nn.escet.urjc.es gamma$nn

1

Ejercicio 2
Un profesor tiene las notas de los alumnos que se presentaron aun examen en un fichero de texto. Cada l´ ınea est´ compuesta por el login del alumno, un espacio y su calificaci´n, que siempre ser´ apto o a o a no apto jperez apto mgarcia no apto asanche no apto mgome apto fcano apto Desea un script de shell bash que env´ un correo electr´nico a cada estudiante, con la siguiente ıa o informaci´n: o Su nota, esto es, la l´ ınea que le corresponda en el ficheroanterior El n´mero de estudiantes presentados, as´ como el de aprobados u ı Ejemplo: Al estudiante ”mgomez”se le env´ un correo similar a este: ıa mgomez apto. Presentados: 5, Aprobados: 3 (Este correo lo leer´ un humano, as´ que no son relevantes los espacios, las may´sculas, etc) a ı u Notas: El script recibir´ en el argumento 1 de l´ a ınea de comandos el nombre del fichero con las notas Ladirecci´n de cada estudiante es: login@pantuflo.es o En una m´quina Unix, se puede enviar un correo mediante el comando mail, pasando: a • El cuerpo del correo por la entrada est´ndar a • El destinatario del correo en el argumento 1 de l´ ınea de comandos • Si el script no recibe el nombre del fichero, debe mostrar un error y finalizar

Soluci´n o
#!/bin/bash if test $# -ne 1 then echo Uso: >&2 echo $0fichero_de_notas>&2 exit fi suspensos=$(cat $1 | grep "no apto" | wc -l) presentados=$(cat $1 | wc -l) aprobados=$(($presentados - $suspensos)) logins=$(cat $1 | cut -d’ ’ -f1 ) for login in $logins do su_nota=$(grep $login $1) estadisticas="Presentados: $presentados, Aprobados:$aprobados" echo $su_nota. $estadisticas | mail $login@pantuflo.es done

2

Observaciones: echo Uso: >&2 redirige lasalida de echo a stderr El filtro grep apto encaja tanto en la cadena apto como en la cadena no apto El filtro grep no encaja tanto en la cadena no apto como en la cadena fcano

Ejercicio 3
Tenemos un directorio que contiene, entre otras cosas, fotos: ficheros con extensi´n .jpg o .JPG. Las o fotos tienen mucha resoluci´n: Queremos reducirlas a 800x600 puntos y publicar la versi´n reducida en o oun web. Para reducir el tama˜o podemos usar el comando n convert -geometry 800x600 origen destino Para publicar en el web, basta copiar al directorio public html del home del usuario. Suponemos este directorio existente y con los permisos adecuados. Proceden de un sistema contaminado por un virus, as´ que hay ficheros que a pesar de su extensi´n, ı o no son im´genes jpeg sino ejecutables. Si son...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • SHELL
  • Shell
  • Shell
  • Shell
  • Shell
  • Shell
  • shell
  • Shell

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS