Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/11/2009, à 12:32

CKDevelop

ForemostGUI

lu all,

bon il y a un certain temps j'avais mis en place une interface graphique pour Foremost que j'avais nommé foremost-FP.
Mais depuis j'ai dû revoir certains trucs dans l'interface et, j'ai dû rajouter quelque options....
Donc au final je l'ai carrément renommé, la dernière mise à jour à été effectué hier:
http://www.ckdevelop.org/news/news.php?id=17

voilà en espérant que la nouvelle version intéresse un peu plus de monde...

++CKDevelop

Dernière modification par CKDevelop (Le 09/11/2009, à 13:04)


Home -> Debian Jessie & Home server -> Debian Wheezy
Office -> Ubuntu 14.04 & Office server -> Ubuntu 12.04
Embedded -> Raspbian / Debian Wheezy

Hors ligne

#2 Le 10/11/2009, à 12:24

Ekimoz

Re : ForemostGUI

Tiens, j'ai vu cette interface trainer sur Tux@25 Blog..cool et encore une fois de plus bien pratique...

enfaite si j'ai bien compris tu fais que des interface graphique pour des applications en ligne de commande...?

sinon cool

Hors ligne

#3 Le 10/11/2009, à 14:09

CKDevelop

Re : ForemostGUI

tous compris.. wink merci

++


Home -> Debian Jessie & Home server -> Debian Wheezy
Office -> Ubuntu 14.04 & Office server -> Ubuntu 12.04
Embedded -> Raspbian / Debian Wheezy

Hors ligne

#4 Le 04/12/2012, à 14:20

CKDevelop

Re : ForemostGUI

Ok je reviens avec une nouvelle versionde ForemostGUI, j'ai tout revus.....fini le freepascal, bienvenue à zenity

#!/bin/bash

function _foremost() {
#On crée le formulaire en stockant les valeurs de sortie dans $cfgpass :/
parts=`df -Th | grep -e "^/dev/*" | tr "\n" "|"`
cfg=`zenity --forms \
        --title="ForemostGUI" \
        --text="Configurer votre récupération de données" \
        --width="800" \
        --add-list="Partitions :" \
        --column-values="Partitions :" \
        --list-values="${parts%?}" \
        --add-entry="Extentions :" \
        --add-entry="Destination :
(default:$PWD/output)" \
        --separator="@"`

#Si on clique sur le bouton Annuler
if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi
#Sinon on continue
addr=`echo "$cfg" | cut -d " " -f1` #Addresse absolue de la partitions sélection
ext=`echo "$cfg" | cut -d "@" -f2` #extentions des fichiers à récupérer
outdir=`echo "$cfg" | cut -d "@" -f3` #dossier de sortie
if [ "$ext" != "" ]; then
    ext="$ext"
else
    ext="all"
fi
if [ "$outdir" != "" ]; then
    outdir="-o $outdir"
fi

#on lance foremost
gksudo -m "L'execution de Foremost nécessite les privilèges administrateur" "foremost -w -q -Q -t '$ext' -i '$addr' $outdir" &
pid=$!
zenity --progress --pulsate --auto-close --text="Récupération en cours..." --title="ForemostGUI"
if [ "$?" -eq 1 ]; then
    gksudo -m "La fermeture de Foremost nécessite les privilèges administrateur" "killall foremost"
else
    zenity --question --title="ForemostGUI" --text="La récupération est terminé.\nVos fichiers sont récupérable ici:\n\"$PWD/output\" avec les privilèges administrateur"
fi
_foremost
}

_foremost

Il me reste encore à le poffiner, mais cela fait un bout de temps que je devais revoir le petit, mais le temps n'été pas de la partie.
J'ai pris en compte les nombreuse remarque qui traine sur le forum, donc

je vais rajouter certaines fonctionnalités:
-tri des fichier de sorti suivant leur taille (fort pratique pour les photos, car il devient très facile de récupérer c'est photos perso au lieu des image cache de firefox)
-prévoir une meilleur gestion du processus de foremost (histoire d'avoir une jolie barre de progression)
-ajouter l'option pour définir le dossier de sortie
-faire un paquet propre
-demander à une âme charitable de déposer le projet sur launchpad car perso je galère et ça me soûle grave.

si tout ce passe bien dans la semaine on as un truc de valable. quoi qu'il en soit je tiens à m'excuser pour ma longue absence et donc à la non évolution de mes divers projet, que je compte reprendre en main d'ici peu...enfin si je peu, obligation professionnel font que .... smile

Dernière modification par CKDevelop (Le 04/12/2012, à 17:56)


Home -> Debian Jessie & Home server -> Debian Wheezy
Office -> Ubuntu 14.04 & Office server -> Ubuntu 12.04
Embedded -> Raspbian / Debian Wheezy

Hors ligne

#5 Le 06/02/2013, à 16:26

xavier4811

Re : ForemostGUI

Bonjour,

Quelques idées pour la suite du développement.

#!/bin/bash

# zenity process box
# affichée tant que le process en argument existe, cancel déclenche l'arrêt de foremost
function _wait_process() {
	while pgrep "^"$1"$" &>/dev/null; do echo yes && sleep 1; done | zenity --progress --pulsate --auto-close --text="Récupération en cours..." --title="ForemostGUI"
}

# zenity dialog box
# sélection des paramêtres de récupération
function _select_options(){
	options=`zenity --list \
	--title="ForemostGUI" \
	--text="			Sélectionnez les options de récupération\n				Par défaut, le rapport seul est généré" \
	--checklist \
	--column="Cocher" \
	--column="Description" \
	True "Générer un rapport sans récupérer" "\-w" \
	False "Indirect block detection (fichiers Unix/Linux)" "\-d" \
	False Verbose "\-v" \
	False "Quick mode (Analyse seulement le début des secteurs, déconseillé sur NTFS)" "\-q" \
	False "All headers (y compris les fichiers corrompus)" "\-a" \
	--column="Option" \
	--hide-column="3" \
	--print-column="3" \
	--separator=" " \
	--width="800" \
	--height="280"`
	if [ "$?" -eq 1 ]; then
    echo 1
    else
	options=$(echo $options | sed 's/\\//g')
	echo $options
	fi
}

# zenity dialog box
# sélection des types de fichiers
function _select_extensions(){
	extensions=`zenity --list \
	--title="ForemostGUI" \
	--text="			Sélectionnez les types de fichiers\n				Par défaut, tous les types" \
	--checklist \
	--column="Cocher" \
	--column="Description" \
	False "jpg Images .jpg, .jfif et exif" jpg \
	False "gif Images .gif" gif \
	False "png Images .png" png \
	False "bmp Images bitmap"  bmp \
	False "avi Vidéos .avi seulement" avi \
	False "exe Exécutables .exe et .dll" exe \
	False "mpg Vidéos .mpg" mpg \
	False "wav Audio .wav" wav \
	False "riff Vidéos .avi et .riff" riff \
	False "wmv Windows média (audio et vidéo)" wmv \
	False "mov Vidéos .mov" mov \
	False "pdf Portable document format" pdf \
	False "ole Documents PowerPoint, Word, Excel, Access, et StarWriter" ole \
	False "doc Documents Word uniquement" doc \
	False "zip Fichier zippés, y compris .jar et xml comme les formats openoffice" zip \
	False "rar Archive .rar" rar \
	False "htm Fichiers .htm" htm \
	False "cpp Fichiers source C,C++ ou autres" cpp \
	--column="Option" \
	--hide-column="3" \
	--print-column="3" \
	--separator="," \
	--width="800" \
	--height="270"`
	if [ "$?" -eq 1 ]; then
    echo 1
    else
	echo $extensions
	fi
}

function _select_outputdir() {
    outputdir=`zenity --file-selection \
    --filename "/home/$USER/" \
    --directory`
    if [ "$?" -eq 1 ]; then
    echo 1
    else
	echo $outputdir
	fi
}

function _foremost() {
# Formulaire 1, options de foremost
	params=$(_select_options)
	if [ "$params" = "1" ]; then
    exit
    fi
# paramètres par défaut -w
if ! [ -n "$params" ]
	then params="-w"
fi
# Formulaire 2, types de fichiers
	extension=$(_select_extensions)
	if [ "$extension" = "1" ]; then
    exit
    fi
# types de fichiers par défaut : all
if ! [ -n "$extension" ]
	then extension="all"
fi
# Formulaire 3, dossier de sortie
	outdir=$(_select_outputdir)
	if [ "$outdir" = "1" ]; then
    exit
    fi
# dossier de sortie par défaut /home$USER/output
if ! [ -n "$outdir" ]
	then outdir="/home/$USER/output"
fi

# On crée le formulaire en stockant les valeurs de sortie dans $cfgpass :/
parts=`df -Th | grep -e "^/dev/*" | tr "\n" "|"`
cfg=`zenity --forms \
        --title="ForemostGUI" \
        --text="Configurer votre récupération de données" \
        --width="800" \
        --add-list="Partitions :" \
        --column-values="Partitions :" \
        --list-values="${parts%?}"`

#Si on clique sur le bouton Annuler
if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi
#Sinon on continue
addr=`echo "$cfg" | awk '{ print $1}'` #Addresse absolue de la partition sélectionnée

if [ -z "$outdir" ]; then
	outdir="$PWD/output"
fi

params="$params -t $extension -i $addr -o $outdir"

#on lance foremost
gksudo -m "L'execution de Foremost nécessite les privilèges administrateur" "foremost $params" &>$HOME/foremost_log.txt &

# zenity process box
_wait_process gksudo

# zenity process box
_wait_process foremost

# on redemande le mot de passe si on annule avant la fin, sinon on affiche le résultat
if [ "$(pgrep "^foremost$")" ]
	then gksudo -m "La fermeture de Foremost nécessite les privilèges administrateur" "pkill -15 foremost"
else
	if [ -s "$HOME/foremost_log.txt" ]; then
		# on filtre le contenu du fichier de log
		if [ "$(grep -i ' error ' $HOME/foremost_log.txt)" ]; then
			mapfile -t filecontent < $HOME/foremost_log.txt
			errors=$(printf "%s\n" "${filecontent[@]}")
		fi
		# dialog box différente s'il y a des erreurs
		if [ -n "$errors" ]; then
			zenity --error --title="ForemostGUI" \
			--text="La récupération est terminée.\nles erreurs suivantes ont été détectées :\n\n\"$errors\"" \
			--width="400"
		else
            gksudo -m "Le changement de droits nécessite les privilèges administrateur" "chown -R $USER:$USER $outdir"
            for dirs in `printf "%s\n" $outdir/* | grep -v "audit"`
                do find $dirs -maxdepth 1 -type f -size -11k \
                    -exec mkdir -p $dirs/moins_de_10k \; \
                    -exec mv {} $dirs/moins_de_10k/ \; , \
                    -type f -size +10k -size -1024k \
                    -exec mkdir -p $dirs/entre_10k_et_1M \; \
                    -exec mv {} $dirs/entre_10k_et_1M/ \; , \
                    -type f -size +1023k \
                    -exec mkdir -p $dirs/plus_de_1M \; \
                    -exec mv {} $dirs/plus_de_1M/ \;
            done
			zenity --info --title="ForemostGUI" \
			--text="La récupération est terminée.\nVos fichiers et/ou le rapport sont récupérables ici:\n\"$outdir\""
		fi
	else
	# Si le fichier de log est vide
	zenity --info --title="ForemostGUI" \
	--text="La récupération a été annulée ou une erreur bloque l'éxécution de foremost\nLancez ce script dans un terminal et vérifiez la sortie."
    exit
	fi
fi

_foremost
}

_foremost

Dernière modification par xavier4811 (Le 10/02/2013, à 01:07)

Hors ligne

#6 Le 07/02/2013, à 12:19

CKDevelop

Re : ForemostGUI

xavier4811 a écrit :

Bonjour,

Quelques idées pour la suite du développement.

#!/bin/bash

# zenity process box
# affichée tant que le process en argument existe
function _wait_process() {
        while pgrep $1 &>/dev/null; do echo yes && sleep 1; done | zenity --progress --pulsate --auto-close --text="Récupération en cours..." --title="ForemostGUI"    
}

# zenity dialog box
# sélection des paramêtres de récupération
function _select_options(){
        options=`zenity --list \
        --title="ForemostGUI" \
        --text="                        Sélectionnez les options de récupération\n                              Par défaut, le rapport seul est généré" \
        --checklist \
        --column="Cocher" \
        --column="Description" \
        False "Générer un rapport sans récupérer" "\-w" \
        False "Indirect block detection (fichiers Unix/Linux)" "\-d" \
        False Verbose "\-v" \
        False "Quick mode (Analyse seulement le début des secteurs, déconseillé sur NTFS)" "\-q" \
        False "All headers (y compris les fichiers corrompus)" "\-a" \
        --column="Option" \
        --hide-column="3" \
        --print-column="3" \
        --separator=" " \
        --width="800" \
        --height="270"`
        if [ "$?" -eq 1 ]; then
    echo 1
    else
        options=$(echo $options | sed 's/\\//g')
        echo $options
        fi
}

# zenity dialog box
# sélection des types de fichiers
function _select_extensions(){
        extensions=`zenity --list \
        --title="ForemostGUI" \
        --text="                        Sélectionnez les types de fichiers\n                            Par défaut, tous les types" \
        --checklist \
        --column="Cocher" \
        --column="Description" \
        False "jpg Images .jpg, .jfif et exif" jpg \
        False "gif Images .gif" gif \
        False "png Images .png" png \
        False "bmp Images bitmap"  bmp \
        False "avi Vidéos .avi seulement" avi \
        False "exe Exécutables .exe et .dll" exe \
        False "mpg Vidéos .mpg" mpg \
        False "wav Audio .wav" wav \
        False "riff Vidéos .avi et .riff" riff \
        False "wmv Windows média (audio et vidéo)" wmv \
        False "mov Vidéos .mov" mov \
        False "pdf Portable document format" pdf \
        False "ole Documents PowerPoint, Word, Excel, Access, et StarWriter" ole \
        False "doc Documents Word uniquement" doc \
        False "zip Fichier zippés, y compris .jar et xml comme les formats openoffice" zip \
        False "rar Archive .rar" rar \
        False "htm Fichiers .htm" htm \
        False "cpp Fichiers source C,C++ ou autres" cpp \
        --column="Option" \
        --hide-column="3" \
        --print-column="3" \
        --separator="," \
        --width="800" \
        --height="270"`
        if [ "$?" -eq 1 ]; then
    echo 1
    else
        echo $extensions
        fi
}

# TODO Formulaire de choix pour le dossier de sortie


function _foremost() {
# Formulaire 1, options de foremost
        params=$(_select_options)
        if [ "$params" = "1" ]; then
    exit
    fi
# paramètres par défaut -w
if ! [ -n "$params" ]
        then params="-w"
fi
# Formulaire 2, types de fichiers
        extension=$(_select_extensions)
        if [ "$extension" = "1" ]; then
    exit
    fi
# types de fichiers par défaut : all
if ! [ -n "$extension" ]
        then extension="all"
fi

# On crée le formulaire en stockant les valeurs de sortie dans $cfg :/
parts=`df -Th | grep -e "^/dev/*" | tr "\n" "|"`
cfg=`zenity --forms \
        --title="ForemostGUI" \
        --text="Configurer votre récupération de données" \
        --width="800" \
        --add-list="Partitions :" \
        --column-values="Partitions :" \
        --list-values="${parts%?}" \
        --add-entry="Destination :
(default:$PWD/output)" \
        --separator="@"`

#Si on clique sur le bouton Annuler
if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi
#Sinon on continue
addr=`echo "$cfg" | awk -F"@| +" '{ print $1}'` #Addresse absolue de la partitions sélection
outdir=`echo "$cfg" | awk -F"@| +" '{ print $8}'` #dossier de sortie

if [ "$outdir" = "" ]; then
        outdir="$PWD/output"
fi

params="$params -t $extension -i $addr -o $outdir"

#on lance foremost
gksudo -m "L'execution de Foremost nécessite les privilèges administrateur" "foremost $params" &>$HOME/foremost_log.txt &

# zenity process box
# En attendant la saisie du mot de passe.
_wait_process gksudo

# zenity process box
# En attendant la fin de la récupération.
_wait_process foremost

# on redemande le mot de passe si on annule avant la fin, sinon on affiche le résultat
if [ "$(pgrep foremost)" ]
        then gksudo -m "La fermeture de Foremost nécessite les privilèges administrateur" "pkill -15 foremost"
else
        if [ -s "$HOME/foremost_log.txt" ]; then
                # on filtre le contenu du fichier de log
                if [ "$(grep -i error $HOME/foremost_log.txt)" ]; then
                        mapfile -t filecontent < $HOME/foremost_log.txt
                        errors=$(printf "%s\n" "${filecontent[@]}")
                fi
                # dialog box différente s'il y a des erreurs
                if [ -n "$errors" ]; then
                        zenity --error --title="ForemostGUI" \
                        --text="La récupération est terminée.\nles erreurs suivantes ont été détectées :\n\n\"$errors\"" \
                        --width="400"
                else
                        zenity --info --title="ForemostGUI" \
                        --text="La récupération est terminée.\nVos fichiers et/ou le rapport sont récupérables ici:\n\"$outdir\" avec les privilèges administrateur"
                fi
        else
        # Si le fichier de log est vide
        zenity --info --title="ForemostGUI" \
        --text="La récupération a été annulée ou une erreur bloque l'éxécution de foremost\nLancez ce script dans un terminal et vérifiez la sortie."
        fi
fi

_foremost
}

_foremost 

cool merci wink

je regarde ça ce soir et je fait une mise à jour

++


Home -> Debian Jessie & Home server -> Debian Wheezy
Office -> Ubuntu 14.04 & Office server -> Ubuntu 12.04
Embedded -> Raspbian / Debian Wheezy

Hors ligne