50 lines
1.6 KiB
Bash
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
|
|
|