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 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