Bonjour,
en partant du script ci-dessus, voici un petit utilitaire qui permet de faire des recherches de fichiers, de contrôler l'espace disque, les programmes au démarrage, installation et désinstallation de programmes, mise à jour système et création de profil permettant de lancer des programmes automatiquement( au démarrage ou pas).
Rien de bien grandiose, surtout fait pour le fun et parce que je n'avais rien de mieux à faire.
Le code est certainement perfectible, n'hésitez pas à commenter.
#!/bin/bash
############################################
#Script utilitaire
# auteur: jean-françois BAERT
#Licence Creativ Common BY - SA http://creativecommons.org/licenses/by-sa/2.0/fr/ ou GPL v3
#
#
#
#systemes testés: ubuntu et variantes
#dependance: zenity
#
############################################
#declaration des fonctions:
install()
{
#Installation d'un programme (comme son nom l'indique)
prog=$(zenity --entry --title="Programme" --text="Quel programme voulez vous installer ?" --entry-text= "Programme")
zenity --question --title="Question" --text="Vous allez installer $prog, merci de confirmer"
zenity --password | sudo -S apt-get -y install $prog
main
}
update()
{
#Mise a jour du système
zenity --password | sudo -S apt-get update && sudo apt-get dist-upgrade
main
}
space()
{
#contrôle espace disques
df -h | awk '{print $5 " utilise sur " $6}' | grep % | grep -v Use| sort -n | zenity --text-info --title="Occupation des disques"
main
}
profil_creation()
{
#creation d'un fichier peremttant de lancer des programmes en fonction d'un profil defini
ici=`pwd`
nom_profil=$(zenity --entry --title="Création du profil" --text="Entrez le nom du profil")
profil=$ici/$nom_profil".desk"
if test -e $profil
then
zenity --warning --title="Erreur" --text="Ce profil existe déjà"
question=$(zenity --entry --width=600 --title="Voulez vous modifier le profil existant?" --text= "Non" Oui)
case $question in
Non)
exit 0
;;
Oui)
rm $profil
programmes=$(zenity --entry --width=600 --title="Programmes à lancer" --text="Entrez les programmes à lancer séparés par un espace")
for i in $programmes
do echo $i >> $profil
done
echo $programmes | zenity --text-info --width=400 --title="Ces programmes seront lancés"
chmod u+x $profil
;;
esac
else
programmes=$(zenity --entry --title="Programmes à lancer" --text="Entrez les programmes à lancer séparés par un espace")
for i in $programmes
do echo $i >> $profil
done
echo $programmes| zenity --text-info --width=400 --title="Ces programmes seront lancés"
chmod u+x $profil
fi
main
}
profil_login()
{
#Lancement des programmes precedemment definis dans le profil (fonction ci-dessus)
ici=`pwd`
ls -lrt *desk |awk '{print $9}'| cut -d'.' -f1 > choix_profil
var=`awk '{print $1}' choix_profil`
execute=$(zenity --list --separator='\n' --title="Choix du profil à lancer" --column="Profil" $var)
./$execute".desk"
rm choix_profil
main
}
charge_profil()
{
#création du fichier .desktop et copie vers /etc/xdg/autostart pour lancement automatique des programmes au demarrage de la machine
ici=`pwd`
ls -lrt *desktop |awk '{print $9}'| cut -d'.' -f1 > choix_profil
var1=`awk '{print $1}' choix_profil`
prof=$(zenity --list --separator='\n' --title="Choix du profil à lancer" --column="Profil" $var1)
fic=$ici/$prof".desktop"
echo "[Desktop Entry]" > $fic
echo "Encoding=UTF-8" >> $fic
echo "Name=$prof" >> $fic
echo "Exec=$ici/$prof".desktop"" >>$fic
echo "Terminal=false" >>$fic
echo "Type=Application" >> $fic
chmod 644 $fic
zenity --password --title="Authentification" --text="Entrez votre mot de passe" | sudo -S cp $fic /etc/xdg/autostart/ && sudo chown root:root $fic
main
}
aide()
{
ici=`pwd`
firefox $ici/aide.html
main
}
recherche()
{
# Fonction de recherche de fichiers divers (choix) et affichage des resultat en page web
# on se place dans le home du user courant
cd
ici=`pwd`
##On cree/vide le fichier
> $ici/index.html
# Selection du repertoire a explorer ($HOME par defaut)
chemin=$(zenity --file-selection --title="Select Directory" --directory --filename=$HOME/)
#Selection du type de fichier a chercher
doc=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title="Saisie" --text="Faites votre choix" --entry-text="Films" Musiques Documents Ebook)
case $doc in
1)
exit
;;
Films)
rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Entrez tout ou partie du nom du film ou laissez vide pour tous" )
set -x
# recherche des fichiers videos, on se limite aux avi AVI, mp4 MP4 et mkv MKV
if [$rep == ""] ;then
find $chemin $file -type f -iname '*.mp4' -o -iname '*.avi' -o -iname '*.mkv' | while read i
#on ajoute les fichiers trouves dans la page html
do
echo '<li>[URL='${i}']'${i}'[/URL]</li>' >> $ici/index.html
done
else
find $chemin $file -type f -iname "*$rep*.mp4" -o -iname "*$rep*.avi" -o -iname "*$rep*.mkv" | while read i
do
echo '<li>[URL='${i}']'${i}'[/URL]</li>' >> $ici/index.html
done
fi
;;
Musiques)
rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Entrez tout ou partie du titre recherché, laissez vide pour tous" )
# recherche des fichiers sons on se limite aux mp3, flac, wav
if [$rep == ""] ;then
find $chemin $file -type f -iname '*.mp3' -o -iname '*.flac' -o -iname '*.wav' | while read i
#on ajoute les fichiers trouves dans la page html
do
echo '<li>[URL='${i}']'${i}'[/URL]</li>' >> $ici/index.html
done
else
find $chemin $file -type f -iname "*$rep*.mp3" -o -iname "*$rep*.flac" -o -iname "*$rep*.wav" | while read i
do
echo '<li>[URL='${i}']'${i}'[/URL]</li>' >> $ici/index.html
done
fi
;;
Documents)
rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Entrez tout ou partie du nom du document, laissez vide pour tous" )
# recherche des fichiers on se limite aux doc, xls, odt, ods
if [$rep == ""] ;then
find $chemin $file -type f -iname '*.doc' -o -iname '*.odt' -o -iname '*.xls' -o -iname '*.ods' | while read i
#on ajoute les fichiers trouves dans la page html
do
echo '<li>[URL='${i}']'${i}'[/URL]</li>' >> $ici/index.html
done
else
find $chemin $file -type f -iname "*$rep*.doc" -o -iname "*$rep*.odt " -o -iname "*$rep*.xls" -o -iname "*$rep*.ods"| while read i
do
echo '<li>[URL='${i}']'${i}'[/URL]</li>' >> $ici/index.html
done
fi
;;
Ebook)
rep=$(zenity --entry --ok-label="Valider" --cancel-label="Annuler" --width=400 --height=100 --title=" Saisie" --text="Entrez tout ou partie du nom du document, laissez vide pour tous" )
# recherche des fichiers on se limite aux epub, pdf
if [$rep == ""] ;then
find $chemin $file -type f -iname '*.epub' -o -iname '*.pdf' | while read i
#on ajoute les fichiers trouves dans la page html
do
echo '<li>[URL='${i}']'${i}'[/URL]</li>' >> $ici/index.html
done
else
find $chemin $file -type f -iname "*$rep*.epub" -o -iname "*$rep*.pdf " | while read i
do
echo '<li>[URL='${i}']'${i}'[/URL]</li>' >> $ici/index.html
done
fi
;;
esac
#Generation de la page web # en-tete
echo '<html>' >> $ici/index.html
echo '<li>[URL='${i}']'${i}'[/URL]</li>' >> $ici/index.html
echo '</ul></body></html>' >> $ici/index.html
# firefox ouvre la page
firefox $ici/index.html
}
list_start()
{
ls -lrt /etc/xdg/autostart/* | awk '{print $9}'| awk -F '/' '{print $5}'| cut -d'.' -f1 | zenity --text-info --title="Programmes lancés au démarrage"
}
#Interface pricipale
main()
{
rep=`pwd`
choix=$(zenity --entry --title="Bonjour" --text="Faites votre choix" --entry-text= Utilitaire Administration Aide)
case $choix in
1)
exit 0
;;
Utilitaire)
utile=$(zenity --entry --title="Choix" --text="Faites votre choix" --entry-text= "Recherche" Espace_disque Programmes_au_demarrage)
case $utile in
1)
exit 1
;;
Recherche)
recherche
;;
Espace_disque)
space
;;
Programmes_au_demarrage)
list_start
;;
esac
;;
Administration)
tache=$(zenity --entry --title="Choix" --text="Que voulez vous faire?" --entry= "Update" Install_programm Creer_profil Lancer_profil Charger_profil)
case $tache in
1)
exit 1
;;
Update)
update
;;
Install_programm)
install
;;
Creer_profil)
profil_creation
;;
Lancer_profil)
profil_login
;;
Charger_profil)
charge_profil
;;
esac
;;
Aide)
aide
;;
esac
}
#lancement de la fonction "main", l'interface quoi!
main
Et la doc qui va avec:
[u]Aide:[/u]
Interface principale:
Fonction Utilitaire:
Recherche:
Permet d'effectuer une recherche de film, musique, documents, ebook, dans un dossier (home par défaut) à partir de tout ou partie du nom de fichier.
Une première fenêtre permet de choisir le type d'élément recherché.
La seconde permet de renseigner tout ou partie du nom de fichier. Si rien n'est indiqué, tous les éléments trouvés seront indiqués.
Une page web est générée et ouverte dans firefox. les fichiers sont indiqués par des liens permettant de les ouvrir depuis ou dans le navigateur.
Espace_disque:
Renvoie une fenêtre indiquant les taux d'occupations des différents systèmes de fichiers.
Programmes_au_demarrage:
Liste les applications lancées au démarrage.
Fonction Administration:
Update:
Permet de faire les mises à jour système (password requis)
Install_programm:
Permet d'installer un programme (nom du programme et password requis)
Creer_profil:
Permet de créer un "profil" utilisateur ou autre afin de lancer automatiquement des applications.
Lancer_profil:
Exécution des applications indiquées lors de la création du profil.
Charger_profil:
Les applications indiquées lors de la création du profil seront lancées au démarrage (user courant) (password requis).