12/5/15

Archupdate - Script para actualizar Arch linux y derivados.

He escrito un pequeño script para poder actualizar mi sistema cada vez que inicie el equipo. Es válido para Arch linux y todos los derivados del mismo, (yo uso Antergos, pero también funciona en Manjaro). Esta escrito en Bash y haciendo uso de los recursos de Zenity para darle una interfaz gŕafica sencilla y simple.



Copie y pegue el siguiente código en un fichero de texto y guárdelo con el nombre de archupdate (en minúsculas).
#!/bin/bash
USUARIO=`whoami`
dependencias=(xdotool zenity screenfetch)
for item in ${dependencias[*]}
do
    if ! (pacman -Q $item >/dev/null); then lista=$lista" "$item; fi
done
if [ -n "$lista" ]; then echo $USUARIO | sudo -S pacman -S $lista --noconfirm; fi

# Información del sistema
screenfetch
echo ""

# Comprobamos conexión cada 10 segundos.
x=0
until ping -c1 google.com &>/dev/null
do
  x=$(( $x + 1 ))
  if [ $x = 5 ]; then exit # Al 5º intento salimos
  else
    echo "No hay conexión. Reintentando..."
    sleep 5
  fi
done
# Corregimos el fallo de /var/lib/pacman/db.lck
if [ -f "/var/lib/pacman/db.lck" ]; then echo $USUARIO | sudo -S rm /var/lib/pacman/db.lck; fi
# Sincronizamos las bases de datos de los paquetes
echo $USUARIO | sudo -S pacman -Sy
# Si no hay actualizaciones...
NUMERO=$(pacman -Qqu | wc -l)
if [ $NUMERO = "0" ]; then
    #sudo pacman -Rs $(pacman -Qtdq) --noconfirm # Eliminar paquetes huerfanos
    RED="\033[0;31m"
    ENDCOLOR="\033[0m"
    echo -e $RED"Sistema actualizado."$ENDCOLOR
    sleep 5
    exit 0
else
    # Ocultar terminal
    xdotool windowunmap $(xdotool getactivewindow)
    clear
    # Mostramos las actualizaciones pendientes.
    UPDATELIST=`zenity --list --checklist \
      --height=280 \
      --width=300 \
      --title="Hay "$NUMERO" actualizaciones" \
      --column="Sel." \
      --column="Paquete" \
      --column="Version" \
    $(pacman -Qu | awk -F ' ' '{print  selected " "  $1 " " $2}' selected="TRUE")`;
    clear
    # Actualizamos los paquetes seleccionados
    if [ -n "$UPDATELIST" ]; then
 echo $USUARIO | sudo -S \
 (
 IFS="|"
 for word in $UPDATELIST; do
       echo "#Actualizando: $word" ;
   sudo pacman -S $word --noconfirm
   BARRA=$((BARRA+(100/NUMERO)))
   echo $BARRA ;
 done;
 ) | \
 zenity --progress \
   --width=400 \
   --height=80 \
   --no-cancel \
   --title="Instalando actualizaciones" \
   --percentage=0 \
   --auto-close
    fi
fi
Damos permisos de ejecución con:

chmod +x /ruta del archivo/archupdate

Reparar claves GPG en Arch linux, Antergos y derivados.

Este script automatiza la reparación de las claves GPG. No tiene gran misterio, pero es mas cómodo realizarlo desde un solo comando ya se haga desde la terminal, o llamándolo desde una entrada creada en en el menú. El script tarda un tiempo en llevar su tarea a cabo, aunque no demasiado.
Copie y pegue en un archivo de texto el siguiente código:
#!/bin/bash
sudo rm -R /etc/pacman.d/gnupg
sudo pacman -Scc
sudo pacman -Syy
sudo pacman-key --init
sudo pacman-key --populate archlinux antergos
sudo pacman -S antergos-keyring
sudo pacman -Syu
Una vez hecho esto guardamos como claves y damos permiso con:
chmod +x /ruta del archivo/claves
Una vez mas, espero que les sea útil.

8/5/15

Youtube video.

Aquí les dejo un pequeño script para descargar contenidos de Youtube, aunque funciona también en otras páginas similares. El script comprobará si tenemos creada la carpeta de descarga "Youtube video" en nuestra carpeta de usuario, para alojar las descargas. De no tenerla, la creará de forma automática.

Utilizamos youtube-dl y zenity para tal fin. De no tener estos paquetes instalados en el sistema, los instalaremos ejecutando en el terminal:

Para Arch linux, Antergos, Manjaro y derivados:
sudo pacman -S youtube-dl zenity
Para Debian, Ubuntu y demás derivados:
sudo su
apt-get install youtube-dl zenity
Para ello solo necesitamos copiar y pegar el siguiente código en un fichero de texto.
#!/bin/bash
# Youtube mp3
# Autor: Esteban C. Sanz

function INPUT() {
zenity --entry --title="Youtube video" --text="Introduce URL de youtube:" --width=400
}

if [ -d '~/Youtube video/' ]; then
mkdir ~/'Youtube video'
fi

cd ~/'Youtube video'

while : ; do
URL=`INPUT`
if [ -n "$URL" ] ; then # Si la variable no es null

#CARPETA=$(zenity --file-selection --directory);echo $CARPETA
#cd $CARPETA

youtube-dl $URL | zenity --progress --width=400 --height=100 --title="Youtube video" --text "Descargando video. Por favor, espere. Este proceso puede durar varios minutos." --auto-close --pulsate

notify-send "Archivo descargado." -t 2000

else
exit 0
fi
done
Lo guardamos como youtube-video. Una vez hecho esto, le damos permisos de ejecución con:
chmod +x /ruta del archivo/youtube-video