El post que buscas se encuentra eliminado, pero este también te puede interesar

Script propio para tareas cotidianas en Archlinux

Hola linuxeros!! Hace unos días me puse a leer un poco sobre como programar un script en bash y para empezar me puse a armar un menu con las tareas más cotidianas que hago desde consola en mi archlinux para no tener que escribir los comandos cada vez o tener que generar varios "alias", asi que decidi agrupar todas estos comandos en un menu y, ya que estaba, compartirlo con ustedes!!

Les explico un poco, el menu tiene 3 partes:

1) Mantenimiento del sistema

En esta opción se puede actualizar el sistema, tanto los repos oficiales como los paquetes que hayamos instalados desde Aur, se puede limpiar el cache de pacman, se puede limpiar los paquetes huérfanos, se puede optimizar la base de datos de pacman, se puede tirar el prelink, se puede hacer un backup de los archivos de configuración que yo mas modifico o me parecieron importantes para resguardar (esto queda a criterio de cada uno y es muy fácil agregar o eliminar archivos dentro del script) y ademas, se puede generar un archivo con todos los paquetes que tengamos instalados
Para los backups, yo uso un directorio de Dropbox para sincronizarlo con otras maquinas, ustedes pueden modificarlo al principio del Script!!
También hay una opción para hacer todo esto junto de un plumazo!!

2) Editar archivos de configuración

Acá puse los archivos de configuración que yo mas modifico en archlinux, el editor que puse en el script es "nano", que por supuestos puede ser modificado por vim, emacs o el que gusten!!
Los archivos son: rc.conf, fstab, bashrc, xinitrc, xorg.conf, conky y los archivos de configuración de openbox (menu, rc y autostart)

3) Elegir entorno gráfico para la próxima sesión

Como no me gusta usar gdm, slim ni nada de eso, pero al mismo tiempo uso tanto gnome como openbox, aca arme una opción para "modificar" el archivo ~/.xinitrc de acuerdo al entorno que quiera usar en la próxima sesión.


NOTAS: Para el punto donde se puede elegir el entorno gráfico hay que crear dos archivos: ~/.xinitrcgnome y ~/.xinitrcopenbox con las opciones descomentadas necesarias en cada uno de ellos y el script lo que hace es borrar el ~/.xinitrc original y copiar el que corresponda (gnome u openbox) en su lugar!!

Para algunas tareas, se necesitan privilegios de root, por eso es necesario tener instalado y configura "sudo" para que el script fucione bien!!


Bueno, sin más preámbulo, acá les dejo el script!! Por supuesto que pueden (y deben ) modificarlo a gusto!!

EDIT: AGREGADAS DOS OPCIONES MAS (pacman mirrorlist y pacman.conf) a las opciones de archivos de configuración (MUCHAS GRACIAS ituntp y shitoman que coincidieron en las recomendaciones)


[color=#000000]#!/bin/bash


# Especifica el directorio de Dropbox (modificar por directorio que se quiera)
DROPBOX=~/Dropbox/Dani/Archlinux

# Funcion para lanzar el menu nuevamente ante tarea completada u opcion incorrecta
function menu {
sh ~/menu.sh
}


# Funcion para copiar todos los archivos de configuracion necesarios a la carpeta de Dropbox
# Eliminar las lineas que sean de archivos que no se tengan o no se quiera resguardar
function copiar {
cp ~/.conkyrc $DROPBOX/conkyrc.backup
cp /etc/hosts $DROPBOX/hosts.backup
cp /etc/pacman.conf $DROPBOX/pacman.conf.backup
cp /etc/pacman.d/mirrorlist $DROPBOX/mirrorlist.backup
cp /etc/rc.conf $DROPBOX/rc.conf.backup
cp /etc/resolv.conf $DROPBOX/resolv.conf.backup
cp /etc/resolv.conf.head $DROPBOX/resolv.conf.head.backup
cp ~/.xinitrc $DROPBOX/xinitrc.backup
cp /etc/X11/xorg.conf $DROPBOX/xorg.conf.backup
cp /etc/yaourtrc $DROPBOX/yaourtrc.backup
cp ~/.gtkrc.mine $DROPBOX/gtkrc.mine.backup
cp ~/.gtkrc-2.0 $DROPBOX/gtkrc-2.0.backup
cp ~/.Xdefaults $DROPBOX/Xdefaults.backup
cp ~/.stalonetrayrc $DROPBOX/stalonetrayrc.backup
cp ~/.bashrc $DROPBOX/bashrc.backup
cp /etc/ntp.conf $DROPBOX/ntp.conf.backup
cp ~/.config/openbox/menu.xml $DROPBOX/Openbox/menu.xml.backup
cp ~/.config/openbox/rc.xml $DROPBOX/Openbox/rc.xml.backup
cp ~/.config/openbox/autostart.sh $DROPBOX/Openbox/autostart.sh.backup
cp /usr/share/themes/Orang/openbox-3/themerc $DROPBOX/themerc.orang.backup
cp /etc/fstab $DROPBOX/fstab.backup
cp ~/menu.sh $DROPBOX/menu.sh.backup
}


# Funcion para realizar los pasos necesarios en mantenimiento completo
function mantener {
sudo pacman -Syu
yaourt -Syu --aur
#sudo pacman -Sc
#sudo pacman -Scc
sudo pacman -Rsn $(pacman -Qdtq)
yaourt -Rsn $(yaourt -Qdtq)
sudo pacman-optimize
sudo prelink -amR
# rankmirrors -n 7 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist
copiar
pacman -Qe > $DROPBOX/Paquetes
}

echo ""
echo ""
echo "Qué desea hacer?"
echo ""
echo "1) Mantenimiento del sistema"
echo "2) Edición de archivos de configuración"
echo "3) Seleccionar entorno gráfico para siguiente sesión"
echo "4) Salir"
read opciona
if test $opciona -eq 1
    then    
    echo ""
    echo "Seleccione una opción"
    echo ""    
    echo "1) Mantenimiento completo"
    echo "2) Sólo actualización del sistema"
    echo "3) Limpieza de cache"
    echo "4) Limpieza de huérfanos"
    echo "5) Optimizar pacman"
    echo "6) Hacer prelink"
    echo "7) Copiar archivos de configuración"
    echo "8) Generar lista de paquetes instalados"
    echo "9) Volver al menú principal"
    read opcionb
        case $opcionb in    
            1)
            mantener
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            2)        
            sudo pacman -Syu && yaourt -Syu --aur
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            3)
            sudo pacman -Sc && sudo pacman -Scc
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            4)
            sudo pacman -Rsn $(pacman -Qdtq) && yaourt -Rsn $(yaourt -Qdtq)
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            5)
            sudo pacman-optimize
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            6)
            sudo prelink -amR
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            7)
            copiar
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            8)
            pacman -Qe > $DROPBOX/Paquetes
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            9)
            echo ""
            menu
            ;;
            *)
            echo "****************"
            echo "Opción no válida"
            echo "****************"
            echo ""
            menu
            ;;
        esac
fi
if test $opciona -eq 2
    then    
    echo ""
    echo "Seleccione un archivo a modificar"
    echo ""        
    echo "1) Rc.conf"
    echo "2) Fstab"
    echo "3) Bashrc"
    echo "4) Xinitrc"
    echo "5) Xorg.conf"
    echo "6) Conky"
    echo "7) Menu Openbox"
    echo "8) Configuración Openbox"
    echo "9) Autostart Openbox"
    echo "10) Pacman mirrorlist"
    echo "11) Pacman.conf"
    echo "12) Volver al menú principal"
    read opcionc
        case $opcionc in
            1)
            sudo nano /etc/rc.conf
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            2)
            sudo nano /etc/fstab
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            3)
            nano ~/.bashrc
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            4)
            nano ~/.xinitrc
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            5)
            sudo nano /etc/X11/xorg.conf
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            6)
            nano ~/.conkyrc
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            7)
            nano ~/.config/openbox/menu.xml
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            8)
            nano ~/.config/openbox/rc.xml
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            9)
            nano ~/.config/openbox/autostart.sh
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            10)
            sudo nano /etc/pacman.d/mirrorlist
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            11)
            sudo nano /etc/pacman.conf
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            12)
            echo ""
            menu
            ;;
            *)
            echo "****************"
            echo "Opción no válida"
            echo "****************"
            menu
            ;;
        esac
fi
if test $opciona -eq 3
    then    
    echo ""
    echo "Qué entorno gráfico quiere usar?"
    echo ""
    echo "1) Gnome"
    echo "2) Openbox"
    echo "3) Volver al menú principal"
    read opciond
        case $opciond in
            1)
            rm ~/.xinitrc
            cp ~/.xinitrcgnome ~/.xinitrc
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            2)
            rm ~/.xinitrc
            cp ~/.xinitrcopenbox ~/.xinitrc
            echo "****************"
            echo "Tarea finalizada"
            echo "****************"
            menu
            ;;
            3)
            echo ""
            menu
            ;;
            *)
            echo "Opción no válida"
            echo ""
            menu
            ;;
        esac        
fi
    if test $opciona -eq 4
    then
    exit
    else
    exit
fi[/color]


Sólo queda hacer copy paste del script, guardarlo en nuestro directorio personal con el nombre menu.sh (o el que quieran), darle permisos de ejecución y tipear en consola:

sh ~/menu.sh
(para esto yo generé un alias en ~/.bashrc y lanzo el menu tipeando "m" en el terminal)
alias m="sh ~/menu.sh"



Ojalá que les sirva!!! Saludos linuxeros!!

Anuncios

28 comentarios - Script propio para tareas cotidianas en Archlinux

@ituntp
SOS UN CAPOOOOOOOOOO
@DAYAO
Recomendado, a una amiga le va a servir seguro! +10 aspala
@Ayortano
aspala dijo:
Ayortano dijo:<span>No! Megaupload no (a menos que te dé algún beneficio, estás en tu derecho de borrar el comentario)

<a href="http://ayortan.uphero.com/Sources/menu%5bby%20aspala%5d.sh">http://ayortan.uphero.com/Sources/menu%5bby%20aspala%5d.sh</a></span>


Bueno, lo subi al primero que se me ocurrio!! Total pesaba 5 kb nomas...
Gracias por dar otra opcion!! Ahi agrego tu link al post!! Mucha gracias!




ituntp dijo:SOS UN CAPOOOOOOOOOO


Gracias!! Ojala te sirva!!

Es que a mi no me gusta que tengan que esperar para bajar cosas libres
@DAYAO
Por cierto podés usar la etiqueta [code*][/code*] para escribir código o comandos que hacen aparecer emoticones
@DAYAO
aspala dijo:
DAYAO dijo:Por cierto podés usar la etiqueta [code*][/code*] para escribir código o comandos que hacen aparecer emoticones


Que grande DAYAO!! Ahora se ven bien las tabulaciones!! Gracias!!

De nada
@watafac90
muyyy bueno!! gracias sr Dayao !!!! excelente recomendación!!!
mis ten!
@watafac90
watafac90 dijo:muyyy bueno!! gracias sr Dayao !!!! excelente recomendación!!!
mis ten!

y aspala claro!!!!!grande!!!
@N4Nd0x
Sos groso sabelo buen aporte (Y) te llevas mis 10 de hoy sin dudarlo sigue asi
@ituntp
Señor, me gustó tanto, y garantizo: ANDA EXCELENTE!!!
Te dejo una modificación importante también VAMOS EL SOFT LIBRE!:


echo "1) Rc.conf"
echo "2) Fstab"
echo "3) Bashrc"
echo "4) Xinitrc"
echo "5) Xorg.conf"
echo "6) Conky"
echo "7) Menu Openbox"
echo "8) Configuración Openbox"
echo "9) Autostart Openbox"
echo "10) Pacman mirrorlist"
echo "11) Pacman.conf"
echo "12) Volver al menú principal"

;;
10)
nano /etc/pacman.d/mirrorlist
echo "****************"
echo "Tarea finalizada"
echo "****************"
menu
;;
11)
nano /etc/pacman.conf
echo "****************"
echo "Tarea finalizada"
echo "****************"
;;
12)
echo ""
menu
;;



Si te gustan, agregalas, creo que sirven de mucho esas opciones.

Saludos!
@RicardoMP
+10!
Lo voy a probar.

Una recomendación para todos los archers, instalen powerpill (sudo pacman -S powerpill perl-crypt-ssleay) un wrapper para pacman muy sencillo, que acelera las descargas del mismo, muy recomendable y muy facil de configurar y usar.

Salu2.
@Lucain
Esta bueno el script, un par de consejos si me lo permites:

Mas que nada seria bueno una rutina para verificar que sea el usuario root el que ejecute este script:

if [ "$(id -u)" != "0" ]; then
echo "Lo siento, ejecuta esto como root" 1>&2
else
rutina1()
#serie de isntrucciones o funciones
exit 1
fi


Al utilizar pacman -(tarea) puedes utilizar el flag --noconfirm para esquivar la confirmacion del usuario. Ejemplo:
pacman --noconfirm -Syu

Yaourt puedes editar el /etc/yaourtrc para que no te pida edicion de archivos ni confirmacion ahciendo automatico todo, o utilizar los flags --noedit o --noconfirm

Si utilzias o quieres utilizar rankmirrors se recomienda dejarlo en un numero grande, estilo 35 o 40 mirrors, si lo dejas en numeros pequeños (7 o 10) se limita mucho la disponibilidad de software en los mirrors.

Utiliza rutas absolutas no relativas esto es vital!

Mal uso.

cp ~/.conkyrc $DROPBOX/conkyrc.backup

Buen uso:

cp $HOME/.conkyrc $DROPBOX/conkyrc.backup

o

cp /home/usuario/.conkyrc $DROPBOX/conkyrc.backup

Esto es por que un script administrativo debe proteger la copia y respaldod e archivos de otros usuarios, ademas es por limpieza de codigo. Saludos espero te sirvan estos protips rapidos, buen inicio de script
@SeAgradece
Che, esto es espectacular. Se pasaron (principalmente vos, pero también los que aportaron con sugerencias).
¿Cómo es que comentaste en mi post de cómo instalar Arch y no sugeriste esto?!! Ahora agrego un link a este post.
Gracias por compartir! Mañana te dejo los 10 puntos que se merece el post!
@SeAgradece
aspala dijo:
SeAgradece dijo:Che, esto es espectacular. Se pasaron (principalmente vos, pero también los que aportaron con sugerencias).
¿Cómo es que comentaste en mi post de cómo instalar Arch y no sugeriste esto?!! Ahora agrego un link a este post.
Gracias por compartir! Mañana te dejo los 10 puntos que se merece el post!


Gracias!! Me alegro mucho de que te guste!! No comente nada al respecto en tu post porque no me gustan los comentarios con spam o links a posts que aprovechan un excelente post como el tuyo para promocionarse... igualmente se ve que el espiritu curioso de los linuxeros te llevo hasta aca!! Gracias!

No tiene nada de malo, si a alguno no le gusta te putea un poco y listo, pero si para alguno es interesante, es una buena forma de que se pueda enterar! Igual ya lo agregué!!! Gracias!