rpi-info

Raspberry Pi SN: 0000000012345678
Date: 2014-02-16 14:41
Disk use: 11%
CPU at 700 MHz and Temperature 46.5 C

He cambiado un poco el script que mostraba la velocidad y temperatura del procesador del Raspberry Pi. Ahora muestra también el número de serie.

Si lo añadimos a /usr/local/bin, estará en el PATH:

#! /bin/bash

freq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)
freq=`expr $freq / 1000`
temp=$(cat /sys/class/thermal/thermal_zone0/temp)
temp=`expr $temp / 100`
serial=$(cat /proc/cpuinfo | grep Serial)

echo "Raspberry Pi SN: ${serial:9}"
echo -n "Date: "
date +'%Y-%m-%d %H:%M'
echo -n "Disk use: "
df -h| grep "root"| tr -s ' ' $'\t'| cut -f5
echo "CPU at $freq MHz and Temperature ${temp:0:2}.${temp:2:1} C"

No os olvidéis de hacerlo ejecutable.

Concepto de Script para comprimir

El otro día alguien planteó un problema para un script de bash en los foros de Desdelinux. Tenía que comprimir en *.tar.gz todos los archivos de un directorio. Ojo, todos los archivos, no todos los archivos y todos los directorios y los archivos de esos directorios, …

También había que poder especificar un tamaño máximo de los archivos a comprimir.

Wada, publicó un script que hacía exactamente lo que pedía el chaval, para un trabajo de la facultad, me imagino.

La cosa es que desconocía el comando stat. Estaba pensando en parsear el tamaño del fichero directamente desde la salida de ls y al ver la solución de Wada, me piqué y esta tarde hice un script alternativa.
Sigue leyendo

Función de Bash para el [Si/no]

Para los que, como yo, estáis hartos de implementar una y otra vez las preguntas con respuestas si o no en los scripts de bash, os dejo una función fácil de usar:

function yesno () {
	# usage: $(yesno default)
	if [[ $1 == yes ]]
		printf " [Yes/no]: "
		DEFAULT=yes
	else
		printf " [yes/No]: "
		DEFAULT=no
	fi
	while 1 == 1; do
		read RESPONSE
		RESPONSE=$(echo ${RESPONSE,,})
		if [[ $RESPONSE == yes || $RESPONSE == y ]]; then
			printf "yes"
			return 0
		elif [[ $RESPONSE == no || $RESPONSE == n ]]; then
			printf "no"
			return 0
		elif [[ $RESPONSE == "" ]]; then
			printf $DEFAULT
			return 0
		else
			printf "Please respond yes or no: "
	done
}

Una vez ejecutada, solo acepta “yes”, “no” o la tecla ENTER, no hay otra manera de salir del loop. El “yes” y el “no” te lo acepta de cualquier manera, incluso “yEs”. Y la tecla ENTER devuelve la respuesta por defecto.

¿Cómo usarlo? Sigue leyendo

SSH prompt de mi Raspberry Pi

Last login: Sat Feb 15 23:36:31 2014 from ***.***.***.***
CPU at 700 MHz and Temperature 40.0 C

Pues nada, como estoy haciendo overclocking en mi Raspberry Pi, quiero saber la temperatura de la CPU y la velocidad a la que va. He creado un pequeño script que añadido al bashrc te lo muestra todo al inicio, junto al login.

function freq {
        freq0=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)
        freq1=`expr $freq0 / 1000`
        echo "CPU at $freq1 MHz"
}

function temp {
        temp0=$(cat /sys/class/thermal/thermal_zone0/temp)
        temp1=`expr $temp0 / 100`
        echo Temperature ${temp1:0:2}.${temp1:2:1} C
}

echo $(freq) and $(temp)

Como podéis ver, también se pueden ejecutar en cualquier momento por el hecho de que son funciones, lo he hecho así por eso.

Muchas veces dice 1000 MHz al iniciar, eso es por initial_turbo=60, lo que significa que o nos hemos logeado durante el primer minuto del arranque del sistema o que le estamos dando caña.

Script para borrar los logs de XBMC

En uno de mis equipos tengo instalado Xbmc, pero este produce logs de errores en la carpeta personal. Como no es un equipo de testeo, sino de prueba, hice un script para borrarlos:

#!/bin/bash
FILE=xbmc_crashlog`expr $(date +"%Y%m%d") - 1`-*.log
shopt -s nullglob
set -- $FILE
if [[ $# -gt 0 ]]
then
  rm -f $FILE
fi

Por si ocurre algún error que me interesa tener, he hecho que el script borre los logs a partir del día anterior.

/usr/bin/xbmc: línea ***: **** Violación de segmento “$LIBDIR/xbmc/xbmc.bin” $SAVED_ARGS

Me he topado con un problema en XBMC. Lo peor de todo es que se cerraba sin más, así que lo ejecuté desde la terminal para ver que errores producía:

[ ~ ]$ xbmc
Running DIL (3.22.0) Version
DtsDeviceOpen: Opening HW in mode 0
DtsDeviceOpen: Create File Failed
libpng warning: iCCP: known incorrect sRGB profile
/usr/bin/xbmc: línea 143: 2433 Violación de segmento “$LIBDIR/xbmc/xbmc.bin” $SAVED_ARGS
Crash report available at /home/sigis/xbmc_crashlog-20140124_092332.log

Parece que el warning de libpng lo producen imágenes con metadatos incorrectos, pero eso no repercute en el funcionamiento del programa.

Para el segundo error, que en inglés sería:

/usr/bin/xbmc: line 143: 2433 Segmentation fault “$LIBDIR/xbmc/xbmx.bin” $SAVED_ARGS

Hay que … Sigue leyendo

YUMM: YUM a bit Modified

Hace tiempo explicaba por qué en mi opinión yum sin sudo no tiene sentido, pero debido a un corto script que hice para hacer más cómoda la actualización, tuve que prescindir del alias yum=”sudo yum”.

He escrito otro script que me permite utilizar update.sh e invocar “sudo yum” con yum, lo llamo YUMM, YUM a bit Modified (YUM Modificado un poco), en honor al nombre de YUM (Yellowdog Updater Modified).

#!/bin/bash

if [[ $1 == update ]]
then
  if [[ -z $2 ]]
  then
    printf "Buscando actualizaciones, espere por favor\n"
    yum check-update >& /dev/null

    if [[ $? == 0  ]]
    then
      printf "No hay actualizaciones disponibles\n"
    else
      printf "Se han encontrado actualizaciones\n"
      sudo yum update -y --skip-broken
    fi
  else
    sudo yum $@
  fi
else
  sudo yum $@
fi

Escribiendo esto, me he dado cuenta de una posible optimización… Sigue leyendo

Yum Update

He decidido cambiar mi comando para actualizar el sistema e introducir algo más de sofisticación. Hasta ahora lo que tenía era un alias en mi .bashrc:

alias up='sudo yum update --skip-broken'

Lo he sustituido por esta otra función:

update ()
{
  yum check-update >& /dev/null
  RETURN=$?
  if [[ $RETURN -eq 100 ]]
  then
    sudo yum update -y --skip-broken
  else
    printf "No updates available\n"
  fi
}

Sigue leyendo

Instalando Fedora 18 a través de Fedora 17

Hace tiempo que quería probar Fedup, básicamente desde que comenzo el proyecto, pero nunca tuve el motivo de hacerlo. Ahora con eso de Semana Santa y Feria, he decidido sustituir mi sistema principal, actualmente un Centos 6.4, por Fedora 18. También voy a cambiar, por lo tanto, mi sistema secundario de Fedora 18 a Sabayon.

Como la última versión de Anaconda no me acaba convencer, cobre todo con respecto al particionado, voy a instalar Fedora 17 y después a actualizarlo hasta Fedora 18 con Fedup. El último empujón para hacer esto me lo ha dado el enterarme que hacer esto se ha quitado de Anaconda, que antes lo permitía, y que se ha pasado de manera oficial a Fedup. ¡Olé!

¿Mis razones?

Ya estaba un poco quemado con Centos, hasta hice una lista de los programas que no conseguía instalar/compilar/hacer que funcionaran (aunque cuando ya había probado muchos tantos antes, no he conseguido acordarme de todos), pero a pesar de todo seguía aguantando.

Una frase en un comentario en Desdelinux puso en palabras lo que estaba pensando Sigue leyendo