Ejercicios propuestos en la prueba 10-6-2016
- Realiza un script que utilice dos números enteros como argumentos y deben devolverse todos los números enteros del intervalo formado por los dos números. El programa debe comprobar que se pasan sólo 2 números y que el segundo es mayor que el primero, en caso contrario mostrar mensaje de error.
- Guión que devuelva los enlaces duros que hay en el directorio actual.
- find . –type f –links +1 ¡cuidado! los enlaces duros sobre enlaces blandos no salen
-
ls -li | tail –n +2|sort -k1 -n -r > fichero
cont=`ls –li|tail –n +2|wc –l`
while [ $cont -gt 0 ]
do
var1=`head -"$cont" fichero | tail -1 |tr -s " " | cut -d" " -f1`
conti=`expr $cont - 1`
var2=`head -"$conti" fichero | tail -1 | tr -s " " | cut -d" " -f1`
if [ $var1 -eq $var2 ]
then
head -"$cont" fichero | tail -1 | tr -s " " | cut -d" " -f10 > enlaces
fi
cont=`expr $cont - 1`
done
cat enlaces
-
Arrai=(`ls –li|sort –k1 –n –r`|tr –s “ “ “ “|cut –d “ “ –f1`)
For((i=0;i<${#arrai[*]}; i++))
Do
Cont=0
For((j=0;j<${#arrai[*]}; j++))
Do
if [ ${arrai[$i]} –eq ${arrai[$j]}
then
Cont=$(($cont+1))
fi
Done
if [ $cont -gt 1 ]
then
echo “enlaces duros encontrados”
find . –inum $i
fi
done
- Realiza un script que compruebe cada 15 minutos, la carga media del procesador en esos 15 últimos minutos y que envíe un mensaje al terminal /pts/5 en el caso de que la carga supere más del 20%. (el 20% es simbólico, nos referimos a una carga cualquiera).
creamos el script: carga.sh
v=`cat /proc/loadavg|cut -d" " –f3`
entero=$(echo "$v/1"|bc) otra forma de hacerlo entero=`echo "$v*100"|bc|cut -d"." -f1`
if [ $entero -gt 20 ] siguiendo la anterior forma if [ $entero -gt 2000 ]
then
echo aviso $entero >>/dev/pts/5
fi
En el crontab -e
*/15 * * * * ./root/carga.sh
- EL archivo /etc/login.defs contiene muchos comentarios y líneas en blanco, haz un guion para ver las líneas que no son comentarios o líneas en blanco (los ajustes de configuración real).
grep -Ev /etc/login.defs '^$|^#'
- Realiza un script que me devuelva el nombre de los procesos que realmente están ejecutándose.
c=(`ps -eo stat -o pid|grep "R"|tr -s " " |cut -d" " -f2`)
for v in ${c[*]}
do
ps aux|grep $v|tr -s " "|cut -d" " -f11
done
- Realiza un shell-script que pida por teclado el nombre de un usuario y nos diga si está o no conectado al sistema. Si está conectado que me indique el número de procesos que tiene en el sistema.
echo –n nombre de usuario
read usuario
var=`who|grep –w $usuario`
if [ $? –eq 0 ]
then
n=`Ps aux |grep "^usuario" |wc –l` también ps –u $usuario|wc -l
echo el usuario $usuario está conectado y tiene $n procesos
else
echo el usuario $usuario no está conectado
fi
if test $# -ne 2 –a $1 –lt $2
then
echo “ Perdona pero introduce solo dos números y el segundo mayor que el primero”
else
for (( i=$1; i<=$2;i++))
do
echo “$i”
done
fi