#1 Le 02/05/2014, à 10:01
- kholo
[TUTO] Gestion des Profiles Firefox et Thunderbird + script bash
edit 09/2017
j'ajoute le lien d'un ancien fil dont je me servirai pour améliorer mon script et pousser mes recherches
-------------------------------------------------------
Bonjour à tous,
Voici ma vision des profiles Mozilla plus que du simple partage Windows / Linux
d'abord informations :
profils-ou-firefox-conserve-donnees-utilisateur sur Mozilla
utiliser-gestionnaire-profils-creer-supprimer-profils sur Mozilla
Imaginons le Profil comme un fichier
... propriétaire car ce profil "appartient" à Firefox ou Thunderbird
Comme tout fichier (ou répertoire en réalité)
ce profil peut être
copié, déplacé, supprimé,
compressé puis décompressé,
Chiffré,
encapsulé (dans une image truecrypt et monté comme une clé USB protégée)
accessible en local, à distance
Une fois ce profil installé (n'importe où)
on l'ouvre presque comme on ouvrirait un fichier dans un logiciel :
on ouvre le gestionnaire de profil
on crée un nouveau profil
on donne un nom
on pointe sur le dossier
on valide et c'est bon
Dernière modification par kholo (Le 04/09/2017, à 19:07)
Hors ligne
#2 Le 02/05/2014, à 10:01
- kholo
Re : [TUTO] Gestion des Profiles Firefox et Thunderbird + script bash
SUITE 1
exemple d'application :
à distance par le réseau
2 ordinateurs
1er nommé serveur
2ème nommé client
sur le serveur, le profil
et en serveur un logiciel SSHFS ou Samba
sur le client un Firefox
une fois le répertoire monté depuis le serveur
création et accès au profil (comme expliqué au dessus)
un nuage à la maison
inconvénient :
temps de chargement relatif aux goulots d'étranglement créés par le réseau
et cohésion entre les versions de Firefox utilisées et les plug'ins du profil
Hors ligne
#3 Le 02/05/2014, à 10:02
- kholo
Re : [TUTO] Gestion des Profiles Firefox et Thunderbird + script bash
ce post est pour un script bash de sauvegarde des profiles (ubuntu > 12.04)
c'est du brut :
suivez le guide :
choisir entre Firefox et Thunderbird
choisir un des profiles
choisir l'emplacement de la sauvegarde
sauver Profile depuis la fenêtre principale
c'est un premier jet mais qui est fonctionnel
#!/bin/bash
# ----------------------------------------------
nomlogiciel="${0##*/}"
FONCTION="sauver les profiles Mozilla"
VERSION="0.002"
# NOTES DE VERSIONS
# ----------------------------------------------
#
# ----------------------------------------------
echo "lancement $nomlogiciel..."
# ----------------------------------------------
# nautilus "$PWD" ; exit 0
fichier_log="$nomlogiciel.log"
> "$fichier_log"
CheminDossierDestination="$PWD"
journal () { echo "$@" >> "$fichier_log" ; }
journal "*******************initialisation*******************"
journal "VARIABLES"
# ----------------------------------------------
_quitter () {
journal "_quitter"
# mettre ici tout ce qui sera nescessaire à la bonne fermeture
exit 0
}
# ----------------------------------------------
frm_principale () {
journal "*******************frm_principale*******************"
LAQUESTION="Sauvegardes des profiles Mozilla
---------------------------------------------------------------------
$0 - <b>$VERSION</b>"
texte[0]=""
texte[1]="Profile"
texte[2]="Fichier ini"
texte[3]="Nom Profile"
texte[4]="Destination"
texte[5]="sauver"
valeur[0]=""
valeur[1]="${leProfile}"
valeur[2]="${leFichierProfileINI}"
valeur[3]="${NomProfile}"
valeur[4]="${CheminDossierDestination}"
valeur[5]="ce profile"
zenity --list --width=600 --height=350 --text="$LAQUESTION" \
--ok-label="Sélectionner" \
--cancel-label="quitter" \
--hide-column 1 --column "" --column "${texte[0]}" --column "${valeur[0]}" \
1 "${texte[1]}" "${valeur[1]}" \
2 "${texte[2]}" "${valeur[2]}" \
3 "${texte[3]}" "${valeur[3]}" \
4 "${texte[4]}" "${valeur[4]}" \
0 "" "" \
5 "${texte[5]}" "${valeur[5]}" \
;
}
frm_principale_parser () {
journal "*******************frm_principale_parser*******************"
journal "frm_principale_parser : $1"
case $1 in
1) choisirFFTB ;;
2) choisirFFTB ;;
3) choisirFFTB ;;
4) choisirDossierDestination ;;
5) sauverProfile ;;
0) ;; # rien à faire
*) quitter=1
_quitter ;;
esac
}
# ----------------------------------------------
frm_choixFFTB () {
journal "appel de : ${FUNCNAME} ${@}"
zenity --list \
--radiolist \
--title="Choisir..." \
--text="Firefox ou Thunderbird ?" \
--column="" --column="" --column="Choix" \
--hide-column=2 \
--print-column=2 \
TRUE 1 "Firefox" \
FALSE 2 "Thunderbird"
}
choisirFFTB () {
# Choix puis lecture du fichier profile
leChoixFFTB="$( frm_choixFFTB )"
case $leChoixFFTB in
1) leProfile="Firefox"
leFichierProfileINI="$HOME/.mozilla/firefox/profiles.ini"
# initialisationTexteFirefox
;;
2) leProfile="Thunderbird"
leFichierProfileINI="$HOME/.thunderbird/profiles.ini"
# initialisationTexteThunderbird
;;
*) exit 1 ;;
esac
chargerProfile
choisirProfile
choisirDossierDestination
}
chargerProfile () {
# sortir les noms de chaque profile et le dossier associé
IFS=$'\n'
listeNomProfiles="$(cat "$leFichierProfileINI" | grep "Name=" | sed -e "s/Name=//g" )"
listeCheminProfiles="$(cat "$leFichierProfileINI" | grep "Path=" | sed -e "s/Path=//g" )"
IFS=$'\n' nbreElement=${#listeNomProfiles[@]}
ii=0
for i in ${listeNomProfiles[0]}
do
((ii++))
listeNomProfiles[$ii]="$i"
done
jj=0
for j in ${listeCheminProfiles[0]}
do
((jj++))
listeCheminProfiles[$jj]="$j"
done
listeNomProfiles[0]="Nom"
listeCheminProfiles[0]="Chemin"
}
choisirProfile () {
journal "appel de : ${FUNCNAME} ${@}"
NomProfileNew="$(zenity --entry \
--title "Choisir un profile" \
--text "listeNomProfiles :" \
--entry-text "${listeNomProfiles[@]:1}"
)"
[ ${#NomProfileNew} -gt 0 ] && NomProfile="${NomProfileNew}" || {
exit 1
}
for (( i=0; i<${#listeNomProfiles[@]}; i++ ))
do
if [[ "$NomProfile" == "${listeNomProfiles[$i]}" ]]
then
CheminProfile="${listeCheminProfiles[$i]}"
[[ $(echo "$CheminProfile" | grep \/) ]] || CheminProfile="$HOME/.mozilla/firefox/$CheminProfile"
journal "$CheminProfile"
break
fi
done
}
choisirDossierDestination () {
journal "appel de : ${FUNCNAME} ${@}"
CheminDossierDestination_new=$(
zenity --file-selection --directory \
--filename="${CheminDossierDestination}/" \
--title="${txt_TITLE}" ;
) ;
[ ${#CheminDossierDestination_new} -gt 0 ] && CheminDossierDestination="${CheminDossierDestination_new}"
}
sauverProfile () {
journal "appel de : ${FUNCNAME} ${@}"
journal "chemin Profile \n\t\t\t${CheminProfile}\n\t\t\tDestination\n\t\t\t${CheminDossierDestination}"
mkdir -p "${CheminDossierDestination}/${leProfile}/${NomProfile}"
{ cp -R "${CheminProfile}" "${CheminDossierDestination}/${leProfile}/${NomProfile}" | zenity --progress --pulsate --title="copie du fichier..." --text="en cours..." --auto-close --auto-kill ; } && frm_fin
}
# ----------------------------------------------
frm_fin () { zenity --info --text "sauvegarde terminé" --timeout=4 ; }
# ----------------------------------------------
_main () {
journal "_main"
menuchoice=$(frm_principale);
frm_principale_parser ${menuchoice%|*} # pour corriger le 1|1
if [[ $quitter -ne 1 ]] ; then
# on boucle _main tant que quitter est différent de 1
_main
fi
}
# Programme principale
choisirFFTB
_main
exit 0
Dernière modification par kholo (Le 04/09/2017, à 19:03)
Hors ligne
#4 Le 29/08/2017, à 11:42
- kholo
Re : [TUTO] Gestion des Profiles Firefox et Thunderbird + script bash
une version un peu plus poussée avec choix entre
sauvegarde du dossier du profile tel quel
sauvegarde du profile dans une archive compressée
sauvegarde du profile dans une archive non compressée
#!/bin/bash
# ----------------------------------------------
nomlogiciel="${0##*/}"
FONCTION="sauver les profiles Mozilla"
# https://forum.ubuntu-fr.org/viewtopic.php?id=30801
# https://support.mozilla.org/fr/kb/recuperer-donnees-importantes-ancien-profil
VERSION="0.004"
# NOTES DE VERSIONS
# ----------------------------------------------
#
# ----------------------------------------------
# echo "lancement $nomlogiciel..."
# ----------------------------------------------
# nautilus "$PWD" ; exit 0
# durée d'exécution pour horodatage du log
START=$(date +%s.%N)
fichier_log="/tmp/$nomlogiciel.log"
[ ! -f "$fichier_log" ] && > "$fichier_log"
echo "*****************************************************
$(date)
*****************************************************
" >> "$fichier_log"
function journal () {
local NOW=$(date +%s.%N)
local DIFF=$(echo "${NOW} - ${START}" | bc)
echo -e "[${DIFF}] ${@}" >> "${fichier_log}"
}
# journal "*******************initialisation*******************"
# journal "VARIABLES"
# ----------------------------------------------
CheminDossierDestination="$PWD"
_quitter () {
journal "quitter proprement..."
# mettre ici tout ce qui sera nescessaire à la bonne fermeture
exit 0
}
# ----------------------------------------------
frm_principale () {
# journal "*******************frm_principale*******************"
LAQUESTION="Sauvegardes des profiles Mozilla
---------------------------------------------------------------------
$0 - <b>$VERSION</b>"
texte[0]=""
texte[1]="Profile"
texte[2]="Fichier ini"
texte[3]="Nom Profile"
texte[4]="Destination"
texte[5]="sauver"
texte[6]=""
valeur[0]=""
valeur[1]="${leProfile}"
valeur[2]="${leFichierProfileINI}"
valeur[3]="${NomProfile}"
valeur[4]="${CheminDossierDestination}"
valeur[5]="ce profile dans un dossier"
valeur[6]="ce profile dans une archive"
zenity --list --width=600 --height=350 --text="$LAQUESTION" \
--ok-label="Sélectionner" \
--cancel-label="quitter" \
--hide-column 1 --column "" --column "${texte[0]}" --column "${valeur[0]}" \
0 "CHOIX..." " modifier les options" \
1 "${texte[1]}" "${valeur[1]}" \
2 "${texte[2]}" "${valeur[2]}" \
3 "${texte[3]}" "${valeur[3]}" \
4 "${texte[4]}" "${valeur[4]}" \
0 "CHOIX..." " lancer une action" \
5 "${texte[5]}" "${valeur[5]}" \
6 "${texte[6]}" "${valeur[6]}" \
;
}
frm_principale_parser () {
journal "\n***********************************************************\nfrm_principale_parser : $1"
case $1 in
1) choisirFFTB ;;
2) choisirFFTB ;;
3) choisirFFTB ;;
4) choisirDossierDestination ;;
5) sauverProfile ;;
6) sauverProfileTar ;;
0) ;; # rien à faire
*) quitter=1
_quitter ;;
esac
}
# ----------------------------------------------
frm_choixFFTB () {
journal "appel de : ${FUNCNAME} ${@}"
zenity --list \
--radiolist \
--title="Choisir..." \
--text="Firefox ou Thunderbird ?" \
--column="" --column="" --column="Choix" \
--hide-column=2 \
--print-column=2 \
TRUE 1 "Firefox" \
FALSE 2 "Thunderbird"
}
choisirFFTB () {
journal "appel de : ${FUNCNAME} ${@}"
# Choix puis lecture du fichier profile
leChoixFFTB="$( frm_choixFFTB )"
case $leChoixFFTB in
1) leProfile="Firefox"
leFichierProfileINI="$HOME/.mozilla/firefox/profiles.ini"
# initialisationTexteFirefox
;;
2) leProfile="Thunderbird"
leFichierProfileINI="$HOME/.thunderbird/profiles.ini"
# initialisationTexteThunderbird
;;
*) exit 1 ;;
esac
chargerProfile
choisirProfile
choisirDossierDestination
}
chargerProfile () {
journal "appel de : ${FUNCNAME} ${@}"
# sortir les noms de chaque profile et le dossier associé
IFS=$'\n'
listeNomProfiles="$(cat "$leFichierProfileINI" | grep "Name=" | sed -e "s/Name=//g" )"
listeCheminProfiles="$(cat "$leFichierProfileINI" | grep "Path=" | sed -e "s/Path=//g" )"
IFS=$'\n' nbreElement=${#listeNomProfiles[@]}
ii=0
for i in ${listeNomProfiles[0]}
do
((ii++))
listeNomProfiles[$ii]="$i"
done
jj=0
for j in ${listeCheminProfiles[0]}
do
((jj++))
listeCheminProfiles[$jj]="$j"
done
listeNomProfiles[0]="Nom"
listeCheminProfiles[0]="Chemin"
}
choisirProfile () {
journal "appel de : ${FUNCNAME} ${@}"
NomProfileNew="$(zenity --entry \
--title "Choisir un profile" \
--text "listeNomProfiles :" \
--entry-text "${listeNomProfiles[@]:1}"
)"
[ ${#NomProfileNew} -gt 0 ] && NomProfile="${NomProfileNew}" || {
exit 1
}
for (( i=0; i<${#listeNomProfiles[@]}; i++ ))
do
if [[ "$NomProfile" == "${listeNomProfiles[$i]}" ]]
then
CheminProfile="${listeCheminProfiles[$i]}"
[[ $(echo "$CheminProfile" | grep \/) ]] || CheminProfile="$HOME/.mozilla/firefox/$CheminProfile"
# journal "$CheminProfile"
break
fi
done
}
choisirDossierDestination () {
journal "appel de : ${FUNCNAME} ${@}"
CheminDossierDestination_new=$(
zenity --file-selection --directory \
--filename="${CheminDossierDestination}/" \
--title="Choisir le dossier de sauvegarde" ;
) ;
# --title="${txt_TITLE}" ;
[ ${#CheminDossierDestination_new} -gt 0 ] && CheminDossierDestination="${CheminDossierDestination_new}"
}
sauverProfileTar () {
journal "appel de : ${FUNCNAME} ${@}"
journal "chemin Profile \n\t\t\t${CheminProfile}\n\t\t\tDestination\n\t\t\t${CheminDossierDestination}"
local CheminDestination="${CheminDossierDestination}/${leProfile}"
local RepCourant="$PWD"
[ -d "${CheminDestination}" ] || mkdir -p "${CheminDestination}"
local tar_option
local tar_ext
zenity --question --text="compressé l'archive ?" --text="compressé (non pour non compressé) ?"
if [ $? -eq 0 ]
then
journal "option compressé"
tar_option='-zcvf'
tar_ext='tar.gz'
else
journal "option non compressé"
tar_option='-cvf'
tar_ext='tar'
fi
# cd "${CheminProfile}"
journal "compression de ${CheminProfile}/* \nvers ${CheminDestination}/${NomProfile}.$tar_ext"
{
# tar $tar_option "${CheminDestination}/${NomProfile}.$tar_ext" *
tar $tar_option "${CheminDestination}/${NomProfile}.$tar_ext" "${CheminProfile}"/* 2>/dev/null
} | zenity --progress --pulsate --title="copie du fichier..." --text="en cours..." --auto-close --auto-kill && frm_fin
# cd "${RepCourant}"
}
sauverProfile () {
journal "appel de : ${FUNCNAME} ${@}"
local CheminDestination="${CheminDossierDestination}/${leProfile}/${NomProfile}"
journal "chemin Profile \n\t\t\t${CheminProfile}\n\t\t\tDestination\n\t\t\t${CheminDossierDestination}"
mkdir -p "${CheminDestination}"
{ cp -R "${CheminProfile}/"* "${CheminDestination}" | zenity --progress --pulsate --title="copie du fichier..." --text="en cours..." --auto-close --auto-kill ; } && frm_fin
}
# ----------------------------------------------
frm_fin () {
journal "sauvegarde terminée... ok"
zenity --info --text "sauvegarde terminée" --timeout=3 ;
}
# ----------------------------------------------
_main () {
journal "appel de : ${FUNCNAME} ${@}"
# journal "_main"
menuchoice=$(frm_principale);
frm_principale_parser ${menuchoice%|*} # pour corriger le 1|1
if [[ $quitter -ne 1 ]] ; then
# on boucle _main tant que quitter est différent de 1
_main
fi
}
# Programme principale
choisirFFTB
_main
exit 0
Dernière modification par kholo (Le 09/10/2017, à 11:43)
Hors ligne