opengnsys/Hidra/scripts/hidraDisk

50 lines
1.6 KiB
Bash

#!/bin/bash
# Nombre: hidraDisk
# Descripcion: Detecta los dispositivos de los discos instalados
# Formato: hidraDisk [numdisco [numparticion] ]
# Salida: FichDispositivo ...
# (ninguna salida en caso de error)
# Error: 1 - Formato incorrecto.
# 2 - Dispositivo no detectado.
# Requisitos: awk
# Notas: Solo ejecutable por root
# Licencia: GNU GPL
# Version: 1.0 - Version inicial usando "partprobe"
# Autor: Ramon Gomez, ETSII Univ. Sevilla
# Fecha: 16/05/2007
# Version: 1.1 - Mejora de rendimiento usando /proc/partitions.
# Autor: Ramon Gomez, ETSII Univ. Sevilla
# Fecha: 19/05/2008
# Version: 1.2 - Compativilidad con EAC, sustituye el comando Disk.
# Muestra dispositivos de todos los discos, de 1 disco o de 1 particion.
# Autor: Ramon Gomez, ETSII Univ. Sevilla
# Fecha: 25/03/2009
# Listar dispositivo para los discos duros (tipos: 3=hd, 8=sd).
DISCOS=$(awk '($1==3 || $1==8) && $4!~/[0-9]/ {printf "/dev/%s ",$4}' /proc/partitions)
# Mostrar salidas segun el numero de parametros.
case $# in
0) # Muestra todos los discos, separados por espacios.
echo "$DISCOS"
;;
1) # Error si el parametro no es un digito.
[ -n "${1/[1-9]/}" ] && exit $ERRFORMAT
DISCO=$(echo $DISCOS | awk -v n=$1 '{print $n}')
# Error si no es fichero de bloques.
[ -b "$DISCO" ] || exit $ERRNOTFOUND
echo "$DISCO"
;;
2) # Error si los 2 parametros no son digitos.
[ -n "${1/[1-9]/}" -o -n "${2/[1-9]/}" ] && exit $ERRFORMAT
PART=$(echo $DISCOS | awk -v n=$1 '{print $n}')$2
# Error si no es fichero de bloques.
[ -b "$PART" ] || exit $ERRNOTFOUND
echo "$PART"
;;
*) # Formato erroneo.
exit $ERRFORMAT
esac