[Linux-Biella] find, exec e script
Paolo Ciarrocchi
paolo.ciarrocchi a gmail.com
Ven 21 Apr 2006 21:29:19 CEST
On 4/21/06, Andrea Ferraris <andrea.ferraris a gmail.com> wrote:
> Paolo Ciarrocchi ha scritto:
[...]
> > Chiaro, ma facendo cosi non vedo tanta differenza rispetto al mio find.
>
> Che non c'e` il find. Effettivamente non e` che ci sia tanta differenza,
> ma eviti di fare una cosa inutile, dato che postuli che il kernel sia in
> boot. Trovare una cosa che sai gia` dov'e` non mi sembra molto elegante,
> se si identifica l'eleganza e in UNIX lo e`, con l'essenziale.
Concordo.
> >> La parte appassionante sarebbe quella che ti modifica grub.conf o
> >> menu.lst in automatico. Anzi, partendo dal parsing del file di
> >> configurazione del boot loader potresti gia` sapere dov'e` il kernel e
> >> quindi agire di conseguenza. Il problema, oltre a capire automaticamente
> >> qual e` il boot loader impiegato dal sistema, sempre in gentoo, e` che
> >> normalmente grub.conf o menu.lst e` in /boot/grub e quindi non e`
> >> montato nemmeno lui, mentre quello in /etc e` un simlink a quello.
> >
> > Ci ho ovviamente pensato ma credo sia fuori dalla mia portata.
>
> Ma, non credo. Sia lilo che grub hanno delle parole chiave nei file di
> configurazione che ti permettono di identificare il nome del kernel e il
> suo percorso (sara` vero? credo di si`, ma non vorrei finire come Muzio
> Scevola).
> Per vedere quale boot loader e` installato credo che entrambi abbiano
> delle modalita` di query o listing della configurazione e da
> quell'output o dalla sua assenza dovresti poter capire quale e` usato.
> Poi comunque se qualcuno usasse isolinux o syslinux o magari
> qualcos'altro ... La questione diventa complessa e lo script uno
> scriptone e quindi si ritorna al punto: chi te lo fa fare? Se ti
> diverti, come credo, fai bene, ma come esercizio.
>
E' assolutamente un esercizio, utile per impare un po' di scripting e di zenity.
Sulla mia macchina funziona, percio' perche' non condiverlo?
Cmq, ho implementato quanto mi hai suggerito, il modo in cui distinguo
tra file e symlink è un hack, ma non ho trovato di meglio.
#!/bin/bash
# This script is distribuited under
# GNU GENERAL PUBLIC LICENSE
# Version 2, June 1991
# http://www.gnu.org/licenses/gpl.txt
ls -lt /boot/vmlinuz*|grep "\->"| cut -d " " -f 13,14,15|zenity
--text-info --title "Symbolic links found" --width=400 &
running_kernel=$(uname -r)
kernel=$(ls -lt /boot/vmlinuz*|grep -v "\->" | cut -d " " -f 8| zenity
--list --title "Finding all installed kernels..." --text "You are
currently running "$running_kernel --column "kernels found")
case $? in
0)
# Check whether the script is running as root
if [ `id -u` != "0" ]; then
echo "Sorry, you are not root."
zenity --error --text="Sorry, you are not root" --title "Error message"
exit 1
fi
if [ "$kernel" = "" ]
then
zenity --error --text="You didn't select any kernel"
exit
fi
echo "I'm going to delete" $kernel
vmlinuz=$(echo $kernel| cut -d "/" -f 3)
ver_linux=${vmlinuz/vmlinuz-/}
rm -f /boot/vmlinuz-$ver_linux
rm -f /boot/config-$ver_linux
rm -f /boot/System.map-$ver_linux
rm -f /boot/initrd.img-$ver_linux
rm -rf /lib/modules/$ver_linux
zenity --info --text="grub/lilo configuration might need to be updated"
;;
1)
exit ;;
-1)
exit ;;
esac
--
Paolo
http://paolociarrocchi.googlepages.com
Maggiori informazioni sulla lista
Linux