Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Ubuntu 18.04 LTS
Ubuntu-fr propose des clés USB de Ubuntu et toutes ses « saveurs » ainsi qu'un magnifique t-shirt pour cette toute nouvelle version d'Ubuntu !

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.

#1901 Le 18/02/2016, à 19:41

kholo

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour, je relance les scripteurs fous avec quelques trucs :
NB : d'abord la notation `une_fonction` est en train de disparaître au profit de "$(une_fonction)"

ensuite, voici un bout de script pour utiliser la gestion des ini (ou conf)
c'est à dire enregistrer et lire un fichier ini
suite de cette vieille discussion

#!/bin/bash
nomLogiciel="$(basename "$0")"
FONCTION="lecture et écriture de fichier ini ou conf"
VERSION="alpha"

echo "lancement $nomLogiciel..."

function _quitter {
	# mettre ici tout ce qui sera nécessaire à la bonne fermeture
echo "--------------------------------
AVANT sauverIni le fichier ini contient :"
cat $fichierIni

	# echo "$(sauverIni)" > "$nomLogiciel.ini"  ;
	sauverIni ;

echo "--------------------------------
APRES sauverIni le fichier ini contient :"
cat $fichierIni

	exit 0
}

function parserLigneIni {
	i=$@ ;
	case $i in
		# xxxxx=*)				xxxxxx="${i#*=}" ;;		
		nomLogiciel=*)			nomLogiciel="${i#*=}" ;;
		FONCTION=*)				FONCTION="${i#*=}" ;;
		VERSION=*)				VERSION="${i#*=}" ;;
		une_valeur=*)			une_valeur="${i#*=}" ;;
		une_autre_valeur=*)		une_autre_valeur="${i#*=}" ;;
		une_troisieme=*)		une_troisieme="${i#*=}" ;;
	esac
}

function chargerIni {
# [ -f "$fichierIni" ] || \#
	while read line ;
	do
		parserLigneIni "$line" ;
	done < "$fichierIni" ;
}

function sauverIni {
echo "nomLogiciel=$nomLogiciel
FONCTION=$FONCTION
VERSION=$VERSION
une_valeur=$une_valeur
une_autre_valeur=$une_autre_valeur
une_troisieme=$une_troisieme
"  > "$nomLogiciel.ini" ;
}

function _initialisation {
	une_valeur="On peut changer le fichier ini puis"
	une_autre_valeur="le relancer pour voir les changements"
	une_troisieme="des espaces et des lettres accentuées àÂâêïù"

echo "Les valeurs AVANT chargerIni sont :
nomLogiciel=$nomLogiciel
FONCTION=$FONCTION
VERSION=$VERSION
une_valeur=$une_valeur
une_autre_valeur=$une_autre_valeur
une_troisieme=$une_troisieme
" 

	fichierIni="$nomLogiciel.ini"
	echo "le nom du fichier ini est : $fichierIni"
	chargerIni ;

echo "Les valeurs APRES chargerIni sont :
nomLogiciel=$nomLogiciel
FONCTION=$FONCTION
VERSION=$VERSION
une_valeur=$une_valeur
une_autre_valeur=$une_autre_valeur
une_troisieme=$une_troisieme
" 
}

function _main {
	_quitter
}

_initialisation
_main

echo "Ne doit pas s'afficher !"
exit 0

celui là c'est pour ranger tous les fichiers d'un dossier et ses sous dossiers
par type mime
il doit pouvoir s'améliorer en gérant plutôt les extensions

#!/bin/bash
nomLogiciel="$(basename "$0")" ;
# script pour réorganiser une arborescence rapidement
FONCTION="organiser les fichiers 
en les rangeant dans des dossiers au nom des types mimes" ;
VERSION="0.7" ;
# NOTES DE VERSIONS
# ----------------------------------------------
# 
# ----------------------------------------------
#
# Copyright (C) 22 Jan. 2011, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.
# 
# modifié par kholo-informatique 2016
# www.kholo-informatique.fr
#********************************************************************

function creer_journal {
	fichier_log="$nomLogiciel.log"
journal "$(date)
Ouverture de $nomLogiciel"
}

function journal {
	./journal "$fichier_log" "$@"
}
creer_journal

# journal "Chargement..." "voir_journal"
function voir_journal {
journal "-----------------
FONCTION voir_journal $@
-----------------"
	zenity --text-info \
			--width=600 --height=450 \
			--title="Fichier Journal" \
			--filename=$"$fichier_log" \
			--checkbox="vider le journal en quittant."

	case $? in
		0) rm -f "$fichier_log";
			creer_journal
			journal "RàZ Remise à zéro du journal !"
		;;
		1) journal "Sortie - voir_journal !" ;;
		-1) journal "voir_journal - An unexpected error has occurred." ;;
	esac
}

#********************************************************************
journal "lancement $nomLogiciel..." ;
#********************************************************************

# journal "Chargement..." ""_initialisation
function _initialisation {
journal "-----------------
FONCTION _initialisation
-----------------" ;
# Couleurs du texte affiché dans le shell
	FUSHIA="\033[1;35m" ;
	NOIR="\033[1;0m" ;
	BLEU="\033[1;34m" ;
	VERT="\033[1;32m" ;
	ROUGE="\033[1;31m" ;

	# dirOrigine="/répertoire à trier"
	dirOrigine="$HOME" ;
	# dirDestination="/répertoire de destination"
	dirDestination="$HOME" ;

	nbreDeFichiers=0 ;

	fichierIni="$nomLogiciel.ini"
	chargerIni ;
}

# journal "Chargement..." "chargerIni"
function chargerIni {
journal "-----------------
FONCTION chargement ini
-----------------" ;
	# local x ;
	while read line ;
	do
		journal "$line" ;
		parserLigneIni "$line" ;
		
	done < "$fichierIni" ;
	journal "chargement terminé" ;
}

# journal "Chargement..." "_quitter"
function _quitter {
journal "-----------------
FONCTION _quitter
-----------------" ;
	# mettre ici tout ce qui sera nescessaire à la bonne fermeture

	sauverIni	 ;
	exit 0
}

#********************************************************************

# journal "Chargement..." "parserLigneIni"
function parserLigneIni {
journal "-----------------
FONCTION parserLigneIni
-----------------" ;
	i=$@ ;
	journal "parseur $i" ;
	case $i in
		# xxxxx=*)					xxxxxx="${i#*=}" ;;
		dirOrigine=*)					dirOrigine="${i#*=}" ;;
		dirDestination=*)				dirDestination="${i#*=}" ;;
	esac
}

# journal "Chargement..." "sauverIni"
function sauverIni {
journal "-----------------
FONCTION sauverIni
-----------------" ;
echo "dirOrigine=$dirOrigine
dirDestination=$dirDestination
" > "$nomLogiciel.ini" ;
}

#********************************************************************

# journal "Chargement..." "range"
function range {
	heuredebut=$(date +%s.%N) ;

	# local ORIG=${ORIG%/} ;
	# local DEST=${DEST%/} ;
	local ORIG=${dirOrigine%/} ;
	local DEST=${dirDestination%/} ;

	find $ORIG/ -regextype "posix-extended" -depth -type f -regex ".*"  | while read fichier ; do
		((nbreDeFichiers++)) ;
		a=$(file -ib "${fichier}") ;

journal "------------------------------------------------
en cours : $a" ;

		[ -d "$DEST/${a%%/*}" ] || mkdir -p "$DEST/${a%%/*}" ;
		mvfichierext=${fichier##*/} ;
		mvfichier=${mvfichierext%%.*} ;
		ext=${mvfichierext#*.} ;

journal "N° $nbreDeFichiers
fichier		: $fichier
mvfichierext	: $mvfichierext
mvfichier	: $mvfichier
ext		: $ext " ;

		# sleep 2 ; #-pour prendre le temps de regarder !

		[ "${fichier%/*}" != "$DEST/${a%%/*}" ] && {
		[ -f "$DEST/${a%%/*}/${mvfichierext}" ] && {
			b=1 ;
			while [ -f "$DEST/${a%%/*}/${mvfichier}_copie${b}.${ext}" ] ; do ((b++)) ; done
			mv "${fichier}" "$DEST/${a%%/*}/${mvfichier}_copie${b}.${ext}" ;
		} || mv "${fichier}" "$DEST/${a%%/*}/${mvfichierext}" ;
		}

	journal "destination	: $DEST/${a%%/*}" ;
	duree="$(echo "$(date +%s.%N) - $heuredebut" | bc)" ;
	journal "Traitement de $nbreDeFichiers fichiers en $duree secondes" ;

	done
	# supprimer les dossiers quand le travail est terminé
	# find $ORIG/ -type d -exec rmdir 2>/dev/null {} \;

	duree="$(echo "$(date +%s.%N) - $heuredebut" | bc)" ;
	journal "Traitement de $nbreDeFichiers fichiers en $duree secondes" ;
}

#********************************************************************

# journal "Chargement..." "frm_principale"
function frm_principale {
journal "-----------------
FONCTION frm_principale
-----------------" ;
LAQUESTION="
---------------------------------------------------------------------
<b>Organisation de fichiers</b>
$FONCTION
Ce module <b>recherche des fichiers</b> selon un <b>modèle</b>
puis les <b>déplace</b>
depuis un <b>dossier origine</b> vers un <b>dossier destination</b>
" ;

	local KA="Dossier Origine" ;
	local KB="Dossier Destination" ;
	local KC="Organiser " ;
	local KD="" ;
	local KE="" ;
	local KF="" ;
	local KG="" ;
	local KH="" ;
	local KI="journal" ;

	local VA="$dirOrigine" ;
	local VB="$dirDestination" ;
	local VC="fichiers par type mime" ;
	local VD="" ;
	local VE="Valeur 9" ;
	local VF="Valeur 6" ;
	local VG="Valeur 7" ;
	local VH="Valeur 8" ;
	local VI="voir et RàZ" ;

	zenity --list --width=600 --height=350 --text="$LAQUESTION" \
	--ok-label="Sélectionner" \
	--cancel-label="quitter" \
	--hide-column 1 --column "" --column "choix" --column "valeur" \
	1 "$KA" "$VA" \
	2 "$KB" "$VB" \
	0 "" "" \
	3 "$KC" "$VC" \
	0 "" "" \
	9 "$KI" "$VI" ;

	# 4 "$KD" "$VD" \
	# 5 "$KE" "$VE" \
	# 6 "$KF" "$VF" \
	# 7 "$KG" "$VG" \
	# 8 "$KH" "$VH" \ #
}

# journal "Chargement..." "frm_principale_parser"
function frm_principale_parser {
journal "-----------------
FONCTION frm_principale_parser
-----------------" ;
	case $1 in
		1) setDirOrigine ;;
		2) setDirDestination ;;
		3) range ;;
		# 4) echo "rien encore" ;;
		# 5) echo "rien encore" ;;
		# 6) echo "rien encore" ;;
		# 7) echo "rien encore" ;;
		# 8) echo "rien encore" ;;
		9) voir_journal ;;
		0) 
			echo ""
			;;
		*) 
			quitter="1"
			_quitter ;;
	esac
}

#********************************************************************

# journal "Chargement..." "_main"
function _main {
journal "-----------------
FONCTION _main
-----------------" ;
	menuchoice=$(frm_principale);
	frm_principale_parser ${menuchoice%|*} # pour corriger le 1|1

	if [ $quitter!="1" ] ; then
		# on boucle tant que quitter est différent de 1
		# pas de else car pas nescessaire ;°)
		_main ;
	fi
}

#********************************************************************

# journal "Chargement..." "setDirOrigine"
function setDirOrigine {
journal "-----------------
FONCTION setDirOrigine
-----------------" ;
	local dirOrigineOld="$dirOrigine" ;
	dirOrigine="$(zenity --file-selection --directory --filename="$dirOrigine/")" ;
	if [ $? = 0 ] ;
	then
		journal "Le dirOrigine est ${dirOrigine}" ;
	else
		dirOrigine="$dirOrigineOld" ;
	fi
}

# journal "Chargement..." "setDirDestination"
function setDirDestination {
journal "-----------------
FONCTION setDirDestination
-----------------" ;
	local dirDestinationOld="$dirDestination" ;
	dirDestination="$(zenity --file-selection --directory --filename="$dirDestination/")" ;
	if [ $? = 0 ] ;
	then
		journal "dirDestination : ${dirDestination}" ;
	else
		dirDestination="$dirDestinationOld" ;
	fi
}

# journal "Chargement..." "afficher_aide_ldc"
function afficher_aide_ldc {
echo "
-----------------------------------------------
exemples :
$nomLogiciel -[OPTIONS]
 
-----------------------------------------------
"
}

#********************************************************************

# journal "Chargement..." "parser_arguments_VARIABLES"
function parser_arguments_VARIABLES {
journal "-----------------
FONCTION parser_arguments_VARIABLES $@
-----------------"
# PARSER VARIABLES
local i
for i in $@ ;
do
case $i in
	-h|-H|--help) 	afficher_aide_ldc		;;
	# fiche=*)		fiche="${i#*=}" 		;;
	fichier_rch=*)	fichier_rch="${i#*=}"	;;
esac
done

}

# journal "Chargement..." "parser_arguments_ACTION"
function parser_arguments_ACTION {
journal "-----------------
FONCTION parser_arguments_ACTION $@
-----------------"
local i
for i in $@
do
case $i in
	-r|--range) 	range				;;
	# *) journal "$i - unknown option"	;;
esac
done
}

#********************************************************************

# journal "Chargement..." "EDITION_IN"
function EDITION_IN {
journal "-----------------
FONCTION EDITION_IN $@
-----------------"
	_initialisation
	_main
}

# journal "Chargement..." "EDITION_OUT"
function EDITION_OUT {
journal "-----------------
FONCTION EDITION_OUT
-----------------"
	parser_arguments_VARIABLES "$@"
	_initialisation
	parser_arguments_ACTION "$@"
}

# ********************************************************************

if [ "$#" -eq 0 ]; then
	journal "mode_edition=TRUE -> IN"
	mode_edition="TRUE"

	EDITION_IN
else
	journal "mode_edition=FALSE -> OUT"
	mode_edition="FALSE"
	EDITION_OUT "$@"
fi

# ********************************************************************

exit 0

Pour les GUI vite faits avec une liste de choix j'ai ce genre de chose avec zenity list
je remet un exemple que j'ai mis sur le forum pour lancer des jeux dans Mame

#!/bin/bash
# ----------------------------------------------
nomLogiciel="$(basename "$0")"
FONCTION="lancement de jeux avec Mame"
VERSION="alpha"
# NOTES DE VERSIONS
# 
# ----------------------------------------------
# à mettre au début d'un fichier bash
# pas encore géré
# PID=$$
# FIFO=/tmp/FIFO${PID}
# mkfifo ${FIFO}
# ----------------------------------------------
echo "lancement $nomLogiciel..."

declare -a GAME_NAME ;
declare -a GAME_PATH ;
declare -a GAME_ARGS ;

function _journal {
	fichier_log="$nomLogiciel.log"

	if [ -f "$fichier_log" ];
	then
		echo "..."
	else
		echo "Création du fichier de log : $fichier_log"
		touch "$fichier_log";
	fi
}
echo "ouverture du journal"
_journal

function journal {
	echo "$@" >> $fichier_log
}

# journal "Chargement..." "voir_journal"
function voir_journal {
journal "-----------------
FONCTION voir_journal $@
-----------------"
	zenity --text-info \
			--width=600 --height=450 \
			--title="Fichier Journal" \
			--filename=$"$fichier_log" \
			--checkbox="vider le journal en quittant."

	case $? in
		# 0) 2>/dev/NULL > "$fichier_log";
		0) rm -f "$fichier_log" ;
			_journal
			journal "RàZ Remise à zéro du journal !"
		;;
		1) journal "Sortie - voir_journal !" ;;
		-1) journal "voir_journal - An unexpected error has occurred." ;;
	esac
}

# journal "Chargement..." "_initialisation"
function _initialisation {
journal "*******************initialisation*******************"
quitter="0"
journal "VARIABLES"
MAME="/usr/games/mame"
LAQUESTION="<b>$nomLogiciel</b>
--------------------------------------------------
Ce module est une liste de choix de jeux Mame
--------------------------------------------------
le double clic sur un choix pour lancer un jeu
sélection avec les flèches puis entrée aussi
echap pour quitter
" ;
#-------------------------------------------------------------
GAME_NAME[0]="Nom" ;
GAME_PATH[0]="Chemin" ;
GAME_ARGS[0]="Arguments" ;
#-------------------------------------------------------------
# METTRE LA LISTE ET LES PARAMETRAGES DES JEUX ICI
# ATTENTION ZENITY EST TRES CHATOUILLEUX
# IL N'AIME PAS LES LES VARIBLES QUI COMMENCENT PAR UN TIRET "-"
# SOLUTION : METTRE UN ESPACE
#-------------------------------------------------------------
GAME_NAME[1]="makaimurg" ;
GAME_PATH[1]="/home/mame/roms/makaimurg" ;
# METTRE LES DIFFERENTES CONF A COMMENTER OU DECOMMENTER
# GAME_ARGS[1]=" -resolution 1900x1080 -waitvsync -cheat -autosave" ;	# CONFIG MAXI
GAME_ARGS[1]=" -resolution 1400x1050 -waitvsync -cheat -autosave" ; 	# CONFIG DEFAUT
# GAME_ARGS[1]=" -resolution 1024x768 -waitvsync -cheat -autosave" ;	# CONFIG MINI
#-------------------------------------------------------------
GAME_NAME[2]="Jeux 2" ;
GAME_PATH[2]="/chemin/vers/jeux2" ;
GAME_ARGS[2]="arguments de Jeux 2" ;
#-------------------------------------------------------------
GAME_NAME[3]="Jeux 3" ;
GAME_PATH[3]="/chemin/vers/jeux3" ;
GAME_ARGS[3]="arguments de Jeux 3" ;
#-------------------------------------------------------------
GAME_NAME[4]="Jeux 4" ;
GAME_PATH[4]="/chemin/vers/jeux4" ;
GAME_ARGS[4]="arguments de Jeux 4" ;
#-------------------------------------------------------------
GAME_NAME[5]="Jeux 5" ;
GAME_PATH[5]="/chemin/vers/jeux5" ;
GAME_ARGS[5]="arguments de Jeux 5" ;
#-------------------------------------------------------------
GAME_NAME[6]="Jeux 6" ;
GAME_PATH[6]="/chemin/vers/jeux6" ;
GAME_ARGS[6]="arguments de Jeux 6" ;
#-------------------------------------------------------------
GAME_NAME[7]="Jeux 7" ;
GAME_PATH[7]="/chemin/vers/jeux7" ;
GAME_ARGS[7]="arguments de Jeux 7" ;
#-------------------------------------------------------------
GAME_NAME[8]="Jeux 8" ;
GAME_PATH[8]="/chemin/vers/jeux8" ;
GAME_ARGS[8]="arguments de Jeux 8" ;
#-------------------------------------------------------------
GAME_NAME[9]="Jeux 9" ;
GAME_PATH[9]="/chemin/vers/jeux9" ;
GAME_ARGS[9]="arguments de Jeux 9" ;
#-------------------------------------------------------------
}

# journal "Chargement..." "_quitter"
function _quitter {
journal "_quitter"
# mettre ici tout ce qui sera nescessaire à la bonne fermeture

	exit 0
}

# journal "Chargement..." "frm_principale"
function frm_principale {
journal "*******************frm_principale*******************"
	zenity --list --width=600 --height=430 --text="$LAQUESTION" \
	--ok-label="Sélectionner" \
	--cancel-label="quitter" \
	--hide-column 1 --column "" --column "${GAME_NAME[0]}" --column "${GAME_ARGS[0]}" \
	1 "${GAME_NAME[1]}" "${GAME_ARGS[1]}" \
	0 "" "" \
	2 "${GAME_NAME[2]}" "${GAME_ARGS[2]}" \
	3 "${GAME_NAME[3]}" "${GAME_ARGS[3]}" \
	4 "${GAME_NAME[4]}" "${GAME_ARGS[4]}" \
	5 "${GAME_NAME[5]}" "${GAME_ARGS[5]}" \
	6 "${GAME_NAME[6]}" "${GAME_ARGS[6]}" \
	7 "${GAME_NAME[7]}" "${GAME_ARGS[7]}" \
	8 "${GAME_NAME[8]}" "${GAME_ARGS[8]}" \
	9 "${GAME_NAME[9]}" "${GAME_ARGS[9]}" \
	0 "" "" \
	100 "journal" "voir les logs" \
	101 "aide" "texte aide" ;
}

# journal "Chargement..." "frm_principale_parser"
function frm_principale_parser {
journal "*******************frm_principale_parser*******************"
journal "frm_principale_parser : $1"
	case $1 in	
		# 1) lanceur "$1" ;;
		[1-9]) lanceur $1 ;;
		100) voir_journal ;;
		101) voir_aide ;;
		0) echo "" ;;
		*) # quitter="1" ;
			_quitter ;;
	esac
}

# journal "Chargement..." "lanceur"
function lanceur {
	nombre=$1
	echo "lancement de ${GAME_NAME[$nombre]}"
	# $MAME "${GAME_PATH[9]}" "${GAME_ARGS[9]}"
}

# journal "Chargement..." "_main"
function _main {
	journal "_main"
	menuchoice=$(frm_principale);
	frm_principale_parser ${menuchoice%|*} # pour corriger le 1|1

	if [ $quitter!="1" ] ; then
		#on boucle tant que quitter est différent de 1
		#pas de else car pas nescessaire ;°)
		_main
	fi
}

# journal "Chargement..." "voir_aide"
function voir_aide {
echo "
ce script crée un fichier journal avec un .log
les fonction _journal et journal
un appel de journal fonctionnera comme echo

_initialisation porte bien son nom
il est lancé avant main
mettre les jeux dedans selon le modèle laissé

_main
la boucle permet de relancer l'interface principale 
chaque fois qu'une action est terminée

frm_principale
lance zenity et retournera le numéro de ligne sélectionnée

frm_principale_parser
effectuera une action selon la réponse donnée par frm_principale

_quitter
permet de fermer plus proprement son application
"
}

# #-initialisation
_initialisation
_main

exit 0

bon code !

Hors ligne

#1902 Le 18/02/2016, à 20:08

kholo

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

pguimier a écrit :

Bonjour voici des scripts pour le répertoire de script nautilus :
Convertir des fichiers svg en pdf (il faut inkscape) :

pour les scripts nautilus des zip contiennent plein de trucs sympas
et une page existe dans la doc d'Ubuntu

Les trucs que j'aime :
j'adore la réduction des pdf

#! /bin/bash

# AUTHOR:	(c) Ricardo Ferreira
# NAME:		Compress PDF 1.4
# DESCRIPTION:	A nice Nautilus script with a GUI to compress and optimize PDF files
# REQUIRES:	ghostscript, poppler-utils, zenity
# LICENSE:	GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# WEBSITE:	https://launchpad.net/compress-pdf

# Messages
		# English (en-US)
		error_nofiles="No file selected."
		error_noquality="No optimization level selected."
		error_ghostscript="PDF Compress requires the ghostscript package, which is not installed. Please install it and try again."
		error_nopdf="The selected file is not a valid PDF archive."
		label_filename="Save PDF as..."
		label_level="Please choose an optimization level below."
		optimization_level="Optimization Level"
		level_default="Default"
		level_screen="Screen-view only"
		level_low="Low Quality"
		level_high="High Quality"
		level_color="High Quality (Color Preserving)"
		job_done="has been successfully compressed"

case $LANG in

	pt* )
		# Portuguese (pt-PT)
		error_nofiles="Nenhum ficheiro seleccionado."
		error_noquality="Nenhum nível de optimização escolhido."
		error_ghostscript="O PDF Compress necessita do pacote ghostscript, que não está instalado. Por favor instale-o e tente novamente."
		error_nopdf="O ficheiro seleccionado não é um ficheiro PDF válido."
		label_filename="Guardar PDF como..."
		label_level="Por favor escolha um nível de optimização abaixo."
		optimization_level="Nível de Optimização"
		level_default="Normal"
		level_screen="Visualização no Ecrã"
		level_low="Baixa Qualidade"
		level_high="Alta Qualidade"
		level_color="Alta Qualidade (Preservação de Cores)"
		job_done="foi comprimido com sucesso";;


	es* )
		# Spanish (es-AR) by Eduardo Battaglia
		error_nofiles="Ningún archivo seleccionado."
		error_noquality="Ningún nivel de optimización escogido."
		error_ghostscript="Compress PDF necesita el paquete ghostscript, que no está instalado. Por favor instálelo e intente nuevamente."
		label_filename="Guardar PDF como..."
		label_level="Por favor escoja un nivel de optimización debajo."
		optimization_level="Nivel de Optimización"
		level_default="Normal"
		level_screen="Sólo visualización"
		level_low="Baja calidad"
		level_high="Alta calidad"
		level_color="Alta calidad (Preservación de Colores)";;


	cs*)
		# Czech (cz-CZ) by Martin Pavlík
		error_nofiles="Nebyl vybrán žádný soubor."
		error_noquality="Nebyla zvolena úroveň optimalizace."
		error_ghostscript="PDF Compress vyžaduje balíček ghostscript, který není nainstalován. Nainstalujte jej prosím a opakujte akci."
		label_filename="Uložit PDF jako..."
		label_level="Prosím vyberte úroveň optimalizace z níže uvedených."
		optimization_level="Úroveň optimalizace"
		level_default="Výchozí"
		level_screen="Pouze pro čtení na obrazovce"
		level_low="Nízká kvalita"
		level_high="Vysoká kvalita"
		level_color="Vysoká kvalita (se zachováním barev)";;


	fr*)
		# French (fr-FR) by Astromb
		error_nofiles="Aucun fichier sélectionné"
		error_noquality="Aucun niveau d'optimisation sélectionné"
		error_ghostscript="PDF Compress a besoin du paquet ghostscript, mais il n'est pas installé. Merci de l'installer et d'essayer à nouveau."
		error_nopdf="Le fichier que vous avez sélectionné n'est pas un PDF valide."
		label_filename="Sauvegarder le PDF sous..."
		label_level="Merci de choisir, ci-dessous, un niveau d'optimisation."
		optimization_level="Niveau d'optimisation"
		level_default="Défaut"
		level_screen="Affichage à l'écran"
		level_low="Basse qualité"
		level_high="Haute qualité"
		level_color="Haute qualité (Couleurs préservées)";;

	zh_CN*)
		# Simplified Chinese  (zh_CN) by TualatriX Chou
		error_nofiles="没有选择文件。"
		error_noquality="没有优化优化等级。"
		error_ghostscript="PDF压缩需要ghostscript软件包,但是它没有安装。请先安装然后再重试。"
		error_nopdf="选择的文件不是一个有效的PDF文件"
		label_filename="另存为PDF..."
		label_level="请在下面选择优化等级"
		optimization_level="优化等级"
		level_default="默认"
		level_screen="仅在屏幕上浏览"
		level_low="低品质"
		level_high="高品质"
		level_color="高品质(护色) ";;

        ar*)
                # Arabic (ar) by Mohammed hasan Taha
		error_nofiles="لم يتم اختيار ملف"
		error_noquality="لم يتم اختيار درجة الضغط"
		error_ghostscript="هذا السكربت يحتاج حزمة ghostscript package لذا يرجى تنصيبها ثم اعادة المحاولة"
		error_nopdf="الملف الذي تم اختياره ليس ملف pdf  صالح"
		label_filename="حفظ الملف باسم"
		label_level="الرجاء اختيار درجة الضغط"
		optimization_level="درجة الضغط"
		level_default="افتراضي"
		level_screen="عرض للشاشة فقط(الدرجة الأكثر انخفاضا)"
		level_low="جودة منخفضة"
		level_high="جودة مرتفعة"
		level_color="جودة عالية جدا";;

	ml_IN*)
		# Malayalam (ml_IN) by Hrishikesh K B
		error_nofiles="ഒരു ഫയലും  തിരഞ്ഞെടുത്തിട്ടില്ല."
		error_noquality="യാതൊരു ഒപ്റ്റിമൈസേഷന് ലെവലും  തിരഞ്ഞെടുത്തിട്ടില്ല."
		error_ghostscript="പി ഡി എഫ് കംപ്രസ്സറിന് ഗോസ്റ്റ് സ്ക്രിപ്റ്റ് പാക്കേജ് ആവശ്യമാണ്. ആ പാക്കേജ് ഇന്സ്റ്റാള് ചെയ്ത ശേഷം  ദയവായി വീണ്ടും  ശ്രമിക്കുക."
		error_nopdf="തിരഞ്ഞെടുത്ത ഫയല് സാധുവായ ഒരു പിഡിഎഫ് ആര്ച്ചീവ് അല്ല."
		label_filename="പിഡിഎഫ് ഇങ്ങിനെ സംരക്ഷിക്കുക..."
		label_level="ദയവായി താഴെ നിന്നും  ഒരു ഒപ്റ്റിമൈസേഷന് ലെവല് തിരഞ്ഞെടുക്കുക."
		optimization_level="ഒപ്റ്റിമൈസേഷന് ലെവല് "
		level_default="ഡീഫാള്ട്ട്"
		level_screen="സ്ക്രീനില് കാണാന് മാത്രം  "
		level_low="കുറഞ്ഞ നിലവാരം"
		level_high="കൂടിയ നിലവാരം "
		level_color="കൂടിയ നിലവാരം (നിറം  സംരക്ഷിച്ചിട്ടുള്ളത്)"

esac

VERSION="1.4"
ZENITY=$(which zenity)

pdf_file=$(basename "$1")

# Check if Ghostscript is installed
GS="/usr/bin/ghostscript"
if [ ! -x $GS ]; then
        $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_ghostscript"
        exit 0;
fi

# Check if the user has selected any files
if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
        $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_nofiles"
        exit 0;
fi

# Check if the selected file is a PDF
mimetype=$(file -b -i "$1")
if [ -z "`echo $mimetype | grep -i 'pdf' `" ]; then
	$ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_nopdf"
        exit 0;
fi

# Ask the user to select a compressing format
selected_level=$($ZENITY  --list  --title="Compress PDF "$VERSION"" --text "$label_level" --radiolist  --column "" --column "$optimization_level" TRUE "$level_default" FALSE "$level_screen" FALSE "$level_low" FALSE "$level_high" FALSE "$level_color")
if [ -z "$selected_level" ]; then
        $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_noquality"
        exit 0;
fi

# Select the optimization level to use
case $selected_level in
        "$level_default")
                COMP_COMMAND="/default"
        ;;
        "$level_screen")
                COMP_COMMAND="/screen"
        ;;
        "$level_low")
                COMP_COMMAND="/ebook"
        ;;
        "$level_high")
                COMP_COMMAND="/printer"
        ;;
        "$level_color")
                COMP_COMMAND="/prepress"
        ;;
esac

# Choose output file name
temp_filename=.temp-"$pdf_file"
suggested_filename=compressed-"$pdf_file"
output_filename=$($ZENITY --file-selection --save --confirm-overwrite --filename="$suggested_filename" --title="$label_filename")

if [ "$?" = 1 ] ; then
        exit 0;
fi

# Extract metadata from the original PDF
pdfinfo "$1" | sed -e 's/^ *//;s/ *$//;s/ \{1,\}/ /g' -e 's/^/  \//' -e '/CreationDate/,$d' -e 's/$/)/' -e 's/: / (/' > .pdfmarks
sed -i '1s/^ /[/' .pdfmarks
sed -i '/:)$/d' .pdfmarks
echo "  /DOCINFO pdfmark" >> .pdfmarks

# Execute ghostscript while showing a progress bar
(echo "0" ;
 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=$COMP_COMMAND -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$temp_filename" "$1" .pdfmarks
 rm .pdfmarks
 echo "100") | (if `$ZENITY --progress --pulsate --auto-close --title="Compress PDF "$VERSION""`;
                 then
                     mv -f "$temp_filename" "$output_filename" &
                     notify-send "Compress PDF" "$pdf_file $job_done"
                 else
                     killall gs
                     rm "$temp_filename"
                     exit
                 fi)

celui ci "nettoie" les noms de fichiers (disons les divx ici par exemple)

#!/bin/bash
#***************************
# kholo-informatique 2016
# www.kholo-informatique.fr
#***************************
nomLogiciel="$(basename "$0")"
VERSION="2015.10.27.1640"
# ----------------------------------------------
FONCTION="Corriger les noms des divx
Ce script transforme les noms de fichiers pour les simplifier"
# il faut sélectionner un ou plusieurs fichiers

for i in $@; do
	if [ -d "$i" ]; then
		zenity --info --text="
		'$i' est un répertoire.
		usage : sélectionnez un ou plusieurs fichiers
		leurs noms seront simplifiés 
		"
		exit
	fi
done

#~ nbre d'arguments considérés comme nombre de fichiers 
NB_FICHIER=$#

for fichier in "$@"
do
	# VARIABLES
	# 
	# on passe tout en minuscule
	# minuscule={echo $nom_casse |tr '[a-z]' '[A-Z]'}
	extension="${fichier##*.}"
	le_fichier="${fichier%.*}"  
	extension=$(echo ${extension}|tr A-Z a-z)
	le_fichier=$(echo ${le_fichier}|tr A-Z a-z)

	# VERIFICATIONS
	# mettre les extensions désirées
	case $extension in
		avi );;
		mkv );;
		mp4 );;
		flv );;
		webm );;
		txt );;
		* )
		zenity --info --text="fichier $extension n'est pas encore prévu"
		shift
		;;
   esac

	# TRAITEMENTS
	#	
	#~ supprime un modèle dans un nom de fichier
	#~ remplacement="XXXXXXXXXXXXXX"	
	#~ modele="XXXXXXXXXXXXXX"
	#~ le_fichier="${le_fichier//$modele/$remplacement}"
	
	#~ remplacer par rien
	remplacement=""	
	le_fichier="${le_fichier//'films.com'/$remplacement}"	
	le_fichier="${le_fichier//'.com'/$remplacement}"
	le_fichier="${le_fichier//'zone-telechargement'/$remplacement}"
	le_fichier="${le_fichier//'topanalyse'/$remplacement}"
	le_fichier="${le_fichier//'tukif'/$remplacement}"
	le_fichier="${le_fichier//'youporn'/$remplacement}"
	le_fichier="${le_fichier//'xvideos'/$remplacement}"
	le_fichier="${le_fichier//'tube8'/$remplacement}"
	le_fichier="${le_fichier//'xhamster'/$remplacement}"
	le_fichier="${le_fichier//'emule'/$remplacement}"
	le_fichier="${le_fichier//'torrent'/$remplacement}"
	le_fichier="${le_fichier//'youtube'/$remplacement}"
	
	le_fichier="${le_fichier//'www'/$remplacement}"
	
	
	le_fichier="${le_fichier//'french movie'/$remplacement}"
	le_fichier="${le_fichier//'full movie'/$remplacement}"
	le_fichier="${le_fichier//'f70'/$remplacement}"
	le_fichier="${le_fichier//'complete'/$remplacement}"
	le_fichier="${le_fichier//'dvdrip'/$remplacement}"
	le_fichier="${le_fichier//'bdrip'/$remplacement}"
	le_fichier="${le_fichier//'brrip'/$remplacement}"
	le_fichier="${le_fichier//'truefrench'/$remplacement}"
	le_fichier="${le_fichier//'subforced'/$remplacement}"
	le_fichier="${le_fichier//'xvid'/$remplacement}"
	le_fichier="${le_fichier//'720p'/$remplacement}"
	le_fichier="${le_fichier//'x264'/$remplacement}"
	le_fichier="${le_fichier//'ac3'/$remplacement}"
	le_fichier="${le_fichier//'vf'/$remplacement}"
	le_fichier="${le_fichier//'®'/$remplacement}" 
	le_fichier="${le_fichier//'©'/$remplacement}" 
	le_fichier="${le_fichier//'french'/$remplacement}" # attention très utilisé
	#~ le_fichier="${le_fichier//$modele/$remplacement}"

	# remplacer par 1 espace
	remplacement=" "
	le_fichier="${le_fichier//'_20'/$remplacement}"
	le_fichier="${le_fichier//'-'/$remplacement}"
	le_fichier="${le_fichier//'_'/$remplacement}"
	le_fichier="${le_fichier//'+'/$remplacement}"
	le_fichier="${le_fichier//'.'/$remplacement}"

	#~ le_fichier="${le_fichier//$modele/$remplacement}"
	
	#~ gestion des crochets 
	le_fichier="${le_fichier//'['/'('}"	
	le_fichier="${le_fichier//']'/')'}"	
	
	# on remet l'extension
	le_fichier="${le_fichier}.${extension}"
			
	# On supprime les doubles espaces
	#~ var_sans_doubles_espaces=$(echo $var)	
	le_fichier=$(echo $le_fichier)
	
	# on vire le dernier espace à la fin si il y en a un
	modele=" ."
	remplacement="."
	le_fichier="${le_fichier//$modele/$remplacement}"
	
	# ATTENTION renomme le fichier
	mv "${fichier}" "${le_fichier}"	
	# ATTENTION

	shift
done  | zenity --progress --pulsate --text="Traitement des $NB_FICHIER fichiers" --auto-close --auto-kill

#~ zenity --info --text="Traitement des $NB_FICHIER fichiers"
notify-send"Traitement des $NB_FICHIER fichiers"

exit 0

celui pour rassembler rapidement des fichiers dans un sous répertoire

#!/bin/bash
#***************************
# kholo-informatique 2016
# www.kholo-informatique.fr
#***************************
NOM="Déplacer une série dans un dossier"
VERSION="2015.10.23.1747"
#~ Ce script crée des séries dans un sous répertoire
#~ à partir d'un ensemble de fichier
#~ il faut sélectionner un ou plusieurs fichiers

for i in $@; do
	if [ -d "$i" ]; then
		zenity --info --text="
		'$i' est un répertoire.
		usage : sélectionnez un ou plusieurs fichiers
		ils seront réunis dans un sous dossier
		une boite de dialogue vous proposera des choix pour le nom"
		exit
	fi
done

NB_ARG=$#

# Ask the user to select
title="Création d'un dossier"
suggested_text="$1"
suggested_text="${suggested_text%.*}" 

dirdest=$(zenity --entry --title="$title" --entry-text="$suggested_text")
if [ -z "$dirdest" ]; then
        $ZENITY --error --title="$title" --text="traitement interrompu"
        exit 0;
fi

mkdir "$dirdest"
	#~ zenity --info --text="déplacement de 
	#~ $dirdest
	#~ dans
	#~ $@
	#~ "
	
for arg in "$@"
do
	mv "$arg" ./"$dirdest"
	#~ zenity --info --text="TRAITEMENT
	#~ $arg
	#~ $dirdest
	#~ "
	shift
done  | zenity --progress --pulsate --text="Traitement des $NB_ARG fichiers" --auto-close --auto-kill
#~ zenity --info --text="Traitement des $NB_ARG fichiers"
notify-send"Traitement des $NB_ARG fichiers"
exit

celui la crée un sous dossier et y change la résolution des images sélectionnées
une liste permet de choisir parmi des formats

#!/bin/bash
#***************************
# kholo-informatique 2016
# www.kholo-informatique.fr
#***************************
NOM="Créer un dossier avec images réduites"
VERSION="2015.12.17.1743"
# Ce script transforme des photos en différents formats
# dans un sous dossier du nom du format
# si un mauvais format est donné en valeur
# la conversion se basera sur la première valeur pour conserver le ratio d'origine


# il faut sélectionner un ou plusieurs fichiers

for i in $@; do
	if [ -d "$i" ]; then
		zenity --info --text="
		'$i' est un répertoire.
		usage : sélectionnez un ou plusieurs fichiers
		ils seront réduits dans un sous dossier
		du nom de la résolution"
		exit
	fi
done

NB_PHOTOS=$#
# zenity --info --title="nbre de photos :" --text="$NB_PHOTOS"

# ********************************************************
LAQUESTION="Choisissez votre résolution"
COMPLEMENT="
Choisissez une option ou tapez une résolution
puis validez...
-------------------------------------
	format : hauteur x largeur
	sans espace 
-------------------------------------
faites échap ou esc pour quitter"
KA="800x600"
KB="1024x768"
KC="2048x1024"
KD="XXXXXXXXX"
KE="XXXXXXXXX"
KF="exit"

# resolution=$(zenity --entry  --width=600 --height=300 --title="Jour" --text="$LAQUESTION $COMPLEMENT" --entry-text="$KB" "$KA"  "$KB" "$KC" "$KD" "$KE" "$KF")
resolution=$(zenity --entry --title="$LAQUESTION" --text="$COMPLEMENT" --entry-text="$KB" "$KA"  "$KB" "$KC" "$KD" "$KE" "$KF")

if [ $resolution == "" ]; then
	exit 1;
fi

dirdest=$resolution
mkdir "$dirdest"

for arg in "$@"
do
	cp "$arg" ./"$dirdest" && cd "$dirdest" && convert "$arg" -resize $resolution "$arg" && cd ..
	shift
done  | zenity --progress --pulsate --text="Traitement des $NB_PHOTOS photos" --auto-close --auto-kill
# zenity --info --text="Traitement des $NB_PHOTOS photos"
notify-send"Traitement des $NB_PHOTOS photos"
exit

Hors ligne

#1903 Le 07/03/2017, à 16:12

enebre

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,
J'aimerais ajouter une fonction à un script pour changer deux parties d'une adresse url ayant comme variable le nom d'une image, et changer le www de l'url en img4 et la partie viewer.php?id= en pics/
exemple:

h t t p://[b]www[/b].hostingpics.net/[b]viewer.php?id=[/b]203300Capturedcran20170307112219.png

pour obtenir:

h t t p://[b]img4[/b].hostingpics.net/[b]pics/[/b]203300Capturedcran20170307112219.png

Dernière modification par enebre (Le 07/03/2017, à 18:51)


On n'écrit pas un "soucie", mais un "souci"
Insérer une miniature vers l' image pix.toile-libre.org voir aussi image et ici ou par script
Balises codes exemple

Hors ligne

#1904 Le 07/03/2017, à 16:32

Compte anonymisé

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

solution avec sed :

sed 's/www/img4/;s/viewer\.php?id=/pics\//' <<< "h t t p://www.hostingpics.net/viewer.php?id=203300Capturedcran20170307112219.png"

#1905 Le 07/03/2017, à 16:33

enebre

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Merci j'essaye ça tout de suite
ça n'a pas fonctionné, mais c'est certainement à cause de moi et la manière que je l'ai intégré au script.
je penses que je devrais aussi donner le script: je voudrais déjà l'intégrer pour hostingpics:

#!/bin/bash

#set -x	# décommenter pour activer le débogage

# PixUp : version 4.0

# Script d'upload d'image vers des services d'hébergement
#  lancez pixup --help pour plus d'info
#
# Services disponibles :
#   - toile-libre.org, debian-fr.xyz
#   - casimages.com
#   - hostingpics.net
#   - lut.im, framapic.org
#
# Auteurs:
#   Sébastien Charpentier   alias "cracolinux"  <cracolinux@mailoo.org>
#   Roger Sauret            alias "eresse"      <rogersauret@free.fr>
#
# Contributeur:
#   HUC Stéphane            alias "PengouinPdt" <devs@stephane-huc.net>
#
# Dépôt GitHub:
#   https://framagit.org/PixUP/pixup (en développement dans .../PixUP/redo)
#
# Copyleft - 2012 → 2016
# Date: 16/06/2016
#
# Dépendances : curl, zenity, xclip
#
# Merci de l'aide de byte_bucket reçue sur le canal #curl de freenode
# Merci à Ansuzpeorth ;)
# et à Hush !
#
# N'hésitez pas à proposer vos idées pour améliorer ce script...

# LICENCE:
#Configuration
# LICENCE PUBLIQUE RIEN À BRANLER
#   Version 1, Mars 2009
#   Copyright (C) 2009 Sam Hocevar
#   14 rue de Plaisance, 75014 Paris, France
#
#   La copie et la distribution de copies exactes de cette licence sont
#   autorisées, et toute modification est permise à condition de changer
#   le nom de la licence.
#
#   CONDITIONS DE COPIE, DISTRIBUTION ET MODIFICATION
#   DE LA LICENCE PUBLIQUE RIEN À BRANLER
#
#   0. Faites ce que vous voulez, j’en ai RIEN À BRANLER.

###
# constantes diverses
###
MAX_FILE_SIZE=15360000			# taille maximale du fichier (Toile Libre)
# codes couleurs et effets d'affichage
NORMAL="$(tput sgr0)"	# RESET
BLEU="$(tput setaf 6)"	# CYAN
ROUGE="$(tput setaf 1)"	# RED
VERT="$(tput setaf 2)"	# GREEN
# Quelques codes générés à titre d'exemple :
# #BLEU="\e[1;34m" #NORMAL="\e[0;39m" #ROUGE="\e[1;31m" #VERT="\e[0;32m"
# pour le changement de couleur dans les "sed"
SED_NORMAL="\\\\e[0;39m"
SED_VERT="\\\\e[0;32m"

# paramètres de la configuration
DIR_CFG="$HOME/.config/Pixup"	# répertoire de configuration
CONFIG="${DIR_CFG}/pixup.conf"	# fichier de configuration

###
# Variables
###
version="v 4.0"
title="Pix^ :: PixUP - Vos images sur les forums"
log_name="${DIR_CFG}/Pixup.historique.html"	# fichier journal/historique
nom_serv=("Casimages" "Debian-fr" "Framapic" "HostingPics" "Lutim" "Toile_Libre")
services=("casimages" "debianfr" "framapic" "hostingpics" "lutim" "toilelibre")
url_serv=("http://www.casimages.com/upload_ano.php" "https://pix.debian-fr.xyz/" "https://framapic.org" "http://www.hostingpics.net/envoi.html" "https://lut.im" "http://pix.toile-libre.org")

#############################################################################
# Fonctions !
#############################################################################

# Cette fonction arrête le script
stop() {

	echo -e "Le script va s'arrêter !"
	exit 1
    }

# Cette fonction vérifie les dépendances nécessaires
F_check_dependances() {

	crd=false
	for name in curl xclip zenity; do
		if [[ ! -x $(which ${name}) ]]; then
			printf "[ \\33[1;31m%s\\33[0;39m ] %s \n" "KO" "Manque: ${name}; installez-la s.v.p !"
			crd=true
		fi
	done
	if ${crd}; then stop; fi
	}

# Cette fonction charge la configuration
F_loadconf() {

	search=""
	[[ -f "${CONFIG}" ]] &&	search="$(grep "PixUp>=v4" "${CONFIG}")"
	if [[ -z "${search}" ]]; then
		# (re)création du fichier de config
	    if [[ ! -d "${DIR_CFG}" ]]; then mkdir "${DIR_CFG}"; fi	# création du répertoire
		cfg="##### PixUp>=v4 ##### Valeurs modifiables ############################
# mode graphique complet : true pour activer ou false pour la désactiver
## si graphedit est true, les choix de fonction et de service sont gérés
## si graphedit est false, le fichier sera téléversé dans service_defaut
graphedit=true
# journalisation : true pour activer ou false pour la désactiver
journal=true
# localisation du journal dans votre répertoire personnel
logname=\"${log_name}\"
# sens de lecture du journal historique : 'normal' ou 'inverse'
chronologie=\"inverse\"
# service par défaut :
## \"casimages\" \"debianfr\" \"framapic\" \"hostingpics\" \"lutim\" \"toilelibre\"
service_defaut=\"hostingpics\"
# taille de la vignette dans le journal :
mini_width=100
# Sortie console en couleur : true pour activer ou false pour la désactiver
output_color=true"
		echo -e "${cfg}" > "${CONFIG}"
	fi
	# initialisation des valeurs
	source "${CONFIG}"
	}

# Cette fonction vérifie le fichier historique
F_checklog () {

	# si le fichier de log n'existe pas, on le crée
	if [ ! -f "${logname}" ] ; then
		F_create_log
	fi
	# si le log est v3.0, on change le nom de fichier
	if [[ "${logname}" == "${DIR_CFG}/Pixup.log.html" ]]; then
		mv "${DIR_CFG}/Pixup.log.html" "${DIR_CFG}/Pixup.historique.html"
	fi
	# si un log v2.4 existe, on le deplace vers .config
	if [[ -f "${HOME}/pixupLog.html" ]]; then
		mv "${HOME}/pixupLog.html" "${DIR_CFG}"
		# et on crée un chaînage dans l'historique
		ancienlog="<article><h3>Ancien fichier log <em>(v2.4)</em></h3><p><strong><a href=\"${DIR_CFG}/pixupLog.html\">${DIR_CFG}/pixupLog.html</a> </strong></p></article>"
		sed -i -e "s#</body>#${ancienlog}\n</body>#g" "${logname}"
	fi
	}

# Crée le fichier historique
F_create_log () {

	echo '<!doctype html>
<html lang="fr">
<head>
<title>${title}</title>
<meta charset="utf-8">
<style type="text/css"> a img { border:0; } </style>
</head>
<body>
</body>
</html>' > "${logname}"
    }

# Cette fonction permet d'afficher l'aide
F_aide () {

	mssg="${ROUGE}Syntaxe${NORMAL} : pixup [option] fichier

${ROUGE}Options${NORMAL} :
    -s ou --service
        c → casimages.com
        d → debian-fr.org
        f → framapic.org
        h → hostingpics.net
        l → lut.im
        t → toile-libre.org
    -j ou --journal   afficher le journal (${logname})
    -c ou --config    afficher le fichier de config
    -h ou --help      afficher l'aide
Si l'option -s n'est pas fournie, le script utilisera le service par défaut :
    - ${service_defaut} -
    Celui-ci est modifiable dans le fichier de config.

${ROUGE}Fichier${NORMAL} :
    Le fichier à uploader

${ROUGE}Exemples${NORMAL} :
    pixup /home/john/rambo/tutu.png
        → upload du fichier /home/john/rambo/tutu.png vers le service par défaut
    pixup -s c toto.jpg
        → upload du fichier ./toto.jpg vers casimages.com
"
	echo -e "${mssg}"
	}

# Cette fonction permet de choisir la fonction
F_fonction() {

	fonction=$(zenity --list --radiolist --title "PixUp ${version}" --text "Fonctions disponibles" \
		--column="Bouton" --column="Libellé" --column="Valeur" --hide-column="3" --print-column="3" \
		--hide-header \
		true "Téléverser une image" "UPLOAD" \
		false "Visualiser l'historique" "LSTLOG" \
		false "Editer la configuration" "EDCONF")
	[[ "$?" != 0 ]] && stop	# si non OK, on sort !
	case "${fonction}" in
		UPLOAD)
			;;    # continuer en séquence
		LSTLOG)
			x-www-browser "${logname}" &
			exit 0 ;;
		EDCONF)
			xdg-open "${CONFIG}" &
			exit 0 ;;
	esac
	}

# Cette fonction acquiert les données de téléversement
F_launcher () {

    if ${versionconsole} ; then
		# en mode console ou "Ouvrir avec..."
		if [[ -f "${PARAMS[0]}" ]]; then
			fichier="${PARAMS[0]}"
			service_choisi="${service_defaut}"
			[[ ${xpixup} = true ]] && versionconsole=false
		else
			case "${PARAMS[0]}" in
				-h|--help)
					F_aide ; exit 0
				;;
				-s|--service)
					crd=false
					for name in "${services[@]}"; do
						if [[ "${name:0:1}" = "${PARAMS[1]:0:1}" ]]; then
							service_choisi="${name}"
							crd=true; break
						fi
					done
					if ${crd}; then
						if [[ -f "${PARAMS[2]}" ]]; then
							fichier="${PARAMS[2]}"
						else
							echo -e "${ROUGE}Fichier non valide${NORMAL} : ${PARAMS[2]}"
							F_aide; exit 3
						fi
					else
						echo -e "${ROUGE}Service non valide${NORMAL} : ${PARAMS[1]}"
						F_aide; exit 3
					fi
				;;
				-j|--journal|--historique)
					x-www-browser "${logname}" &
					exit 0
				;;
				-c|--config)
					xdg-open "${CONFIG}" &
					exit 0
				;;
				*)
					echo -e "${ROUGE}Argument non valide${NORMAL} : ${PARAMS[0]}"
					F_aide; exit 3
				;;
			esac
		fi
	else
		# en mode graphique
		if ${graphedit} ; then
			valeurs=""	# construction de la liste des services
			for idx in "${!services[@]}"; do
				if [[ "${service_defaut}" = "${services[idx]}" ]]; then
					valeurs="${valeurs} true"
				else
					valeurs="${valeurs} false"
				fi
				valeurs="${valeurs} ${nom_serv[idx]} ${services[idx]}"
			done
			service_choisi=$(zenity --list --radiolist --title="PixUp ${version}" --text="Services d'upload" \
            --width=200 --height=240 --column="Bouton" --column="Libellé" --column="Valeur" \
            --hide-column="3" --print-column="3" --hide-header \
			${valeurs})
			[[ "$?" != 0 ]] && stop	# si non OK, on sort !
		else
			service_choisi="${service_defaut}"
		fi
		# acquisition du fichier à téléverser
		F_selection_fichier
	fi
	}

# Cette fonction permet de sélectionner le fichier en mode graphique
F_selection_fichier() {

	fichier=$(zenity --file-selection --title="PixUp ${version}   -   Fichier à uploader" \
		--filename="${chemin:-$HOME}")
	[[ "$?" != 0 ]] && stop	# si non OK, on sort !
	}

# Cette fonction constitue le corps du script (amen !)
PixUp () {

	# Création d'un fichier de travail pour la réception des infos
	echo > "/tmp/tampon"
	# Création du fichier de communication "tube"
	echo -e "result=\"OK\"" > "/tmp/tube"
(
	tampon="/tmp/tampon"
	# Vérification de la validité du fichier et obtention du type de fichier
	F_checkfichier
	F_get_extension
	# Récupération de l'URL du service choisi
	urlserv_choisi=""
	for idx in "${!services[@]}"; do
		if [[ "${service_choisi}" = "${services[idx]}" ]]; then
			urlserv_choisi="${url_serv[idx]}"
			break
		fi
	done
	# Envoi du fichier sur le service choisi
	F_service_${service_choisi}
	# Traitement des retours
	F_build_results
	# Effacement du fichier de travail "${tampon}"
	rm -f "${tampon}"
	# Sauvegarde des variables dans "tube" (à cause du zenity progress)
	echo -e "idx=${idx}" >> "/tmp/tube"
	echo -e "absolufichier=\"${absolufichier}\"" >> "/tmp/tube"
	echo -e "fichier=\"${fichier}\"" >> "/tmp/tube"
	echo -e "ins_mini=\"${ins_mini}\"" >> "/tmp/tube"
	echo -e "ins_imag=\"${ins_imag}\"" >> "/tmp/tube"
	echo -e "aff_mini=\"${aff_mini}\"" >> "/tmp/tube"
) | F_patienter

	# Récupération des variables sauvegardées (par source "tube")
	. "/tmp/tube"

	# Afficher / historiser les résultats, si OK
	if [[ "${result}" = "OK" ]]; then F_show_results
	else cat "/tmp/mesg"; rm -f "/tmp/mesg"; fi
	# Effacement du fichier de communication "tube"
	rm -f "/tmp/tube"
	[[ ${xpixup} == true ]] && exit 0	# si mode "Ouvrir avec...", on sort !
	# Voir si un autre fichier est souhaité
	F_restart_service
	}

# Cette fonction crée, si nécessaire, le chemin de fichier absolu
F_checkfichier () {

	mssg="Le fichier ${absolufichier} n'existe pas !"
	if ${versionconsole} ; then
		if [ "${fichier:0:1}" = "/" ] ; then
			absolufichier="${fichier}"
			fichier="${fichier##*/}" # suppression de la plus longue chaine à gauche du caractère /
		elif [ "${fichier:0:2}" = ".." ] ; then
			cd "${PWD}/${fichier%/*}" # suppression de la plus courte chaine à droite du caractère /
			fichier="${fichier##*/}"
			absolufichier="${PWD}/${fichier}"
		else
			absolufichier="${PWD}/${fichier}"
		fi
	else
		# force le chemin absolu si le fichier seul est fourni (Ouvrir avec...)
		[[ ${xpixup} = true && "${fichier:0:1}" != "/" ]] && fichier="${PWD}/${fichier}"
		absolufichier="${fichier}"
		fichier="${fichier##*/}"
	fi
	# le fichier choisi n'existe pas
	[ ! -f "${absolufichier}" ] && F_fichierHS "${mssg}"
	# on conserve le chemin dans la conf
	chemin="${absolufichier%/*}/" # le dernier / est requis pour l'option filename de zenity
	if [[ -n $(grep 'chemin=' "${CONFIG}") ]]; then
		sed -i '/^chemin/d' "${CONFIG}" # supprime la ligne si elle existe déjà
	fi
	echo -e "chemin=\"${chemin}\"" >> "${CONFIG}"
	}

# Cette fonction extrait le type MIME du fichier
F_get_extension () {

	mssg="Le fichier ${absolufichier} n'est pas une image"
	typemime=$(file -bi "${absolufichier}")
	mime=${typemime%;*} # suppression de la plus courte chaine à droite de ;
	if [ "${mime%/*}" != "image" ]; then # suppression de la plus courte chaine à droite de /
		F_fichierHS "${mssg}"
	fi
	extension=${mime#*/} # suppression de la plus courte chaine à gauche de /
    }

# Cette fonction affiche une erreur si le fichier est incorrect
F_fichierHS() {

	if ${versionconsole} ; then
		echo "$1" > "/tmp/mesg"
	else
		zenity --warning --title="PixUp ${version}" --text="$1"
	fi
	echo -e "result=\"KO\"" > "/tmp/tube"
	exit 2
	}
# Cette fonction envoie vers le service casimages
F_service_casimages () {

	url_codes=$(curl -v -L -F "cat=12" -F "image=@${absolufichier};type=image/${extension};filename=${fichier}" "${urlserv_choisi}" 2>/dev/null | grep 'document.location.href' | cut -d'"' -f2)
	curl "http://www.casimages.com/${url_codes}" 2>/dev/null > "${tampon}"
	}

# Cette fonction envoie vers le service hostingpics
F_service_hostingpics () {

	curl -v -L -F "photo1=@${absolufichier};type=image/${extension};filename=${fichier}" "${urlserv_choisi}" 2>/dev/null > "${tampon}"
	}

# Cette fonction envoie vers le service lutim
F_service_lutim () {

	curl -F "file=@${absolufichier}" -F "format=web" "${urlserv_choisi}" 2>/dev/null > "${tampon}"
	}

# Cette fonction envoie vers le service toilelibre
F_service_toilelibre () {

	curl -v -L -F "img=@${absolufichier};type=image/${extension};filename=${fichier}" -F "MAX_FILE_SIZE=${MAX_FILE_SIZE}" "${urlserv_choisi}/?action=upload" 2>/dev/null > "${tampon}"
	}

# Cette fonction envoie vers le service debianfr
F_service_debianfr() {

	F_service_toilelibre
	}

# Cette fonction envoie vers le service framapic
F_service_framapic() {

	F_service_lutim
	}

# Cette fonction affiche une erreur si le service n'est pas opérationnel
F_serviceHS () {

	text="Le service ${nom_serv[idx]} ne semble pas opérationnel !\nVotre image n'a pas pu être téléversée."
	if ! ${versionconsole} ; then
		zenity --warning --title "PixUp ${version}" --text "${text}"
	else
		echo -e "${ROUGE}ALERTE : PixUp ${version} \n\n${NORMAL}${text}" > "/tmp/mesg"
	fi
	echo -e "result=\"KO\"" > "/tmp/tube"
	exit 2
	}

# Cette fonction traite les retours des services
F_build_results() {

	# traitement du tampon

	declare -a liens

	case "${service_choisi}" in
		"casimages")
			# argument de recherche des url de la miniature et de l'image pour insérer dans un forum
			pattern_url="<input type=['\"]text['\"] class='formlog' onFocus=['\"]this\.select()['\"] size=['\"]90['\"] value=['\"]\[[uU]\([^>]*\)['\"]"
			# argument de recherche des adresses de la miniature et de l'image pour affichage
			pattern_adr="<input type=['\"]text['\"] class='formlog' onFocus=['\"]this\.select()['\"] size=['\"]90['\"] value=['\"]http\([^>]*\)['\"]"
			# extraction des données du tampon
			urls="$(grep "${pattern_url}"  "${tampon}" | sed -e "s#\(.*\)value=['\"]\([^>]*\)['\"]\(.*\)#\2#g")"
			adrs="$(grep "${pattern_adr}"  "${tampon}" | sed -e "s#\(.*\)value=['\"]\([^>]*\)['\"]\(.*\)#\2#g")"
		    [ -z "${urls}" ] && F_serviceHS	# Service indisponible ?
			# dégroupage des retours en 5 liens correspondants
			echo "${urls}" > "/tmp/liens"
			echo "${adrs}" >> "/tmp/liens"
			readarray -t liens < "/tmp/liens"
			rm -f "/tmp/liens"
# Note: A l'issue de ces opérations, le tableau liens contiendra dans l'ordre :
#		liens[0] : code url pour insérer la miniature dans un forum
#		liens[1] : code url pour insérer l'image en grand dans un forum
#		liens[2] : lien d'accès à la page du service casimage contenant l'image
#		liens[3] : adresse de la miniature pour l'afficher
#		liens[4] : adresse de l'image en grand pour l'afficher
			# champs pour l'affichage des résultats (*** préparation résultat ***)
			ins_mini="${liens[0]}"
			ins_imag="${liens[1]}"
			aff_mini="${liens[3]}"
		;;

		"hostingpics")
			# argument de recherche des url de la miniature et de l'image pour insérer dans un forum
			pattern_url="value=\"\[url\([^>]*\)\""
			# argument de recherche de l'adresse de la miniature pour affichage
			pattern_adr="value=.*a href="
			# extraction des données du tampon
			urls="$(grep "${pattern_url}" "${tampon}" | sed -e "s#\(.*\)value=['\"]\([^>]*\)['\"]\(.*\)#\2#g")"
			adrs="$(grep "${pattern_adr}" "${tampon}" | sed -e "s#\(.*\)img src=['\"]\([^>]*\)['\"] alt\(.*\)#\2#g")"
		    [ -z "${urls}" ] && F_serviceHS	# Service indisponible ?
			# dégroupage des retours en 3 liens correspondants
			echo "${urls}" > "/tmp/liens"
			echo "${adrs}" >> "/tmp/liens"
			readarray -t liens < "/tmp/liens"
			rm -f "/tmp/liens"
# Note: A l'issue de ces opérations, le tableau liens contiendra dans l'ordre :
#		liens[0] : code url pour insérer la miniature dans un forum
#		liens[1] : code url pour insérer l'image en grand dans un forum
#		liens[2] : adresse de la miniature pour l'afficher
			# champs pour l'affichage des résultats (*** préparation résultat ***)
			ins_mini="${liens[0]}"
			ins_imag="${liens[1]}"
			aff_mini="${liens[2]}"
		;;

		"framapic" | "lutim")
			# extraction des données du tampon
			value="$(grep "value" "${tampon}" | head -1 | awk -F "/" '{print $4"/"substr($5,0,length($5)-2)}')"
		    [ -z "${value}" ] && F_serviceHS	# Service indisponible ?
			url="${urlserv_choisi}/${value%\"*}"	# élimine '" readon' en fin d'adresse
# Note: A l'issue des ces opérations, url contient l'adresse de l'image en grand
			# champs pour l'affichage des résultats (*** préparation résultat ***)
			ins_mini="Non proposé par le service"
			ins_imag="[url=${url}][img]${url}[/img][/url]"	# code pour insérer l'image en grand dans un forum
			aff_mini="${url}"
		;;

		"debianfr" | "toilelibre")
			# argument de recherche des url de la miniature et de l'image pour insérer dans un forum
			pattern_url="<textarea>\[url.*</textarea>"
			# argument de recherche de l'adresse de la miniature pour affichage
			pattern_adr="<textarea>http.*\upload.*</textarea>"
			# extraction des données du tampon
			urls="$(grep "${pattern_url}" "${tampon}" | sed -e "s#\(.*\)<textarea>\([^>]*\)</textarea>\(.*\)#\2#g")"
			adrs="$(grep "${pattern_adr}" "${tampon}" | sed -e "s#\(.*\)<textarea>\([^>]*\)</textarea>\(.*\)#\2#g")"
		    [ -z "${urls}" ] && F_serviceHS	# Service indisponible ?
			# dégroupage des retours en 3 liens correspondants
			echo "${urls}" > "/tmp/liens"
			echo "${adrs}" >> "/tmp/liens"
			readarray -t liens < "/tmp/liens"
			rm -f "/tmp/liens"
# Note: A l'issue de ces opérations, le tableau liens contiendra dans l'ordre :
#		liens[0] : code url pour insérer la miniature dans un forum
#		liens[1] : code url pour insérer l'image en grand dans un forum
#		liens[2] : adresse de l'image en grand pour l'afficher
			# champs pour l'affichage des résultats (*** préparation résultat ***)
			ins_mini="${liens[0]}"
			ins_imag="${liens[1]}"
			aff_mini="${liens[2]}"
		;;
	esac
	}

# Cette fonction montre et historise les résultats
F_show_results() {

	html="" # buffer de construction de l'historique
	mssg_mini="Code pour insérer la miniature dans un forum : "
	mssg_imag="Code pour insérer l'image dans un forum : "
	mssg_title="PixUp ${version} : ${nom_serv[idx]} - Fichier téléversé"
	time="<time datetime=\"$(date +%Y-%m-%d\ %H:%M:%S)\">$(date +%d-%m-%Y\ à\ %H:%M:%S)</time>"

	# préparation des choix possibles selon le service
	case "${service_choisi}" in
		"framapic" | "lutim")
			msglist=(true "Insérer l'image dans un forum" "I")
		;;
		*)	msglist=(true "Insérer la miniature dans un forum" "M" false "Insérer l'image dans un forum" "I")
		;;
	esac

	# affichage des résultats
	if ! ${versionconsole} ; then
		choix=$(zenity --list --radiolist --title "PixUp ${version}" \
			--text "${nom_serv[idx]} - Fichier téléversé\nPour copier le lien dans le presse-papier" \
			--ok-label "Copier" --column="Choix" --column="Libellé" --column="Clé" \
			--hide-column="3" --print-column="3" --hide-header "${msglist[@]}")
		[[ "$?" != 0 ]] && stop	# si non OK, on sort !

# Note: la commande pour copier "dans le clipboard" =  echo -n "${var}" | xclip -selection c
# l'utilisation de xclip sans "-selection c" copie dans le presse-papier "primaire" qui
# peut être récupéré via un "clic milieu" de la souris (et est différent du clipboard)

		case "${choix}" in
			"M")	echo -n "${ins_mini}" | xclip
					echo -n "${ins_mini}" | xclip -selection c	;;
			"I")	echo -n "${ins_imag}" | xclip
					echo -n "${ins_imag}" | xclip -selection c	;;
		esac
	else
		clear
		echo -e "${mssg_title}"
		if [[ "${output_color}" == "true" ]]; then
			printf '\n%s\n%s%s%s' "${mssg_mini}" "${VERT}" "${ins_mini}" "${NORMAL}"
			printf '\n%s\n%s%s%s\n' "${mssg_imag}" "${VERT}" "${ins_imag}" "${NORMAL}"
		else
			echo -e "\n${mssg_mini}\n${ins_mini}"
			echo -e "\n${mssg_imag}\n${ins_imag}"
		fi
	fi

	# si journalisation active, ajout du téléversement à l'historique
	if ${journal}; then
		if [[ "${chronologie}" == "inverse" ]]; then html="<body>\n"; fi
		html="${html}<article>"
		html="${html}<header><h2><strong>${absolufichier}</strong> envoyé sur <em>${nom_serv[idx]}</em></h2>${time}</header>"
		html="${html}<dl><dt><a href=\"${aff_mini}\" title=\"${fichier}\"><img src=\"${aff_mini}\" alt=\"${fichier}\" width=\"${mini_width}\"></a></dt>"
		html="${html}<dd>${mssg_mini}</dd><dd><strong>${ins_mini}</strong></dd>"
		html="${html}<dd>${mssg_imag}</dd><dd><strong>${ins_imag}</strong></dd>"
		html="${html}</dl><footer><hr></footer>"
		html="${html}</article>"
		if [[ "${chronologie}" == "normal" ]]; then html="${html}\n</body>"; fi
		search="$(grep "title" "${logname}")"
		readarray -t array < "${logname}"
		for index in "${!array[@]}"; do
			array[index]="$(sed -e 's#^ \+##g' <<< "${array[index]}")"
			if [[ "${array[index]}" =~ "<title>" ]]; then
				array[index]="<title>${title}</title>\n"
			elif [[ "${array[index]}" == "<body>" && "${chronologie}" == "inverse" ]]; then
				array[index]="${html}"
			elif [[ "${array[index]}" == "</body>" && "${chronologie}" == "normal" ]]; then
				array[index]="${html}"
			else
				array[index]="${array[index]}\n"
			fi
		done
		# réécriture du fichier historique
		echo -e "${array[*]}" > "${logname}"
	fi
	# suppression des lignes vides dans le fichier
	sed -i '/^$/d' "${logname}"	
	}

# Cette fonction permet de téléverser un autre fichier
F_restart_service() {

	text="Voulez-vous téléverser une autre image ?"
	if ! ${versionconsole} ; then
		zenity --question --title="PixUp ${version}" --text="${text}"
		[[ "$?" != 0 ]] && exit 0	# si non, on sort !
		F_selection_fichier
		PixUp
	else
		if F_question "${text}"; then
			text="Entrer le nom du fichier, s.v.p :"
			read -r -p "${text} " fichier
			PixUp
		fi
		exit 0
	fi
	}

# Cette fonction pose une question et retourne true ou false
F_question () {

	read -r -p "${1} [o|n] " reponse
	case "$reponse" in
		y|Y|o|O|1)	true ;;
		*)			false ;;
	esac
	}

# Cette fonction affiche la boite zenity "Patienter"
F_patienter() {

	zenity --progress --title="PixUp ${version}" --text="Traitement en cours, patientez s.v.p..." --pulsate --auto-close --no-cancel
	}


###############################################################################
# PROGRAMME PRINCIPAL - EXECUTION DU SCRIPT
###############################################################################

# vérification des dépendances
F_check_dependances

clear

# récupération des paramètres
NB_PARAMS=$#
PARAMS=("$@");

# test : lancement graphique ou console ?
versionconsole=false
[ -n "$1" ] && versionconsole=true

# test : lancement via un explorateur (Ouvrir avec...) ?
xpixup=false
[[ "${0##*/}" == "xpixup" ]] && xpixup=true

# chargement de la configuration
F_loadconf

# vérification de l'existence de l'historique
F_checklog

# si mode graphique complet, choix de la fonction
if [[ ${graphedit} = true && ${versionconsole} = false ]]; then
	F_fonction
fi
# acquisition des données de téléversement
F_launcher

# "Allez, cours... Forest ! Cours !"
PixUp

exit 0

Dernière modification par enebre (Le 07/03/2017, à 16:45)


On n'écrit pas un "soucie", mais un "souci"
Insérer une miniature vers l' image pix.toile-libre.org voir aussi image et ici ou par script
Balises codes exemple

Hors ligne

#1906 Le 07/03/2017, à 16:55

enebre

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

l'url à changer est dans ${tampon} et dans cet exemple voici le contenu de ${tampon} sans les balise url et img

h t t p://www.hostingpics.net/viewer.php?id=318136Capturedcran20170307154012.png   h t t p://img4.hostingpics.net/thumbs/mini_318136Capturedcran20170307154012.png

ce serait dans la première partie que le changement doit s'opérer

h t t p://www.hostingpics.net/viewer.php?id=318136Capturedcran20170307154012.png

pour obtenir ceci

h t t p://img4.hostingpics.net/pics/318136Capturedcran20170307154012.png

Dernière modification par enebre (Le 07/03/2017, à 18:50)


On n'écrit pas un "soucie", mais un "souci"
Insérer une miniature vers l' image pix.toile-libre.org voir aussi image et ici ou par script
Balises codes exemple

Hors ligne

#1907 Le 07/03/2017, à 18:40

kholo

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

salut,
peut être plus simple avec

tampon='http://www.hostingpics.net/viewer.php?id=203300Capturedcran20170307112219.png'
echo "http://img4.hostingpics.net/pics/${tampon##*id=}"

Hors ligne

#1908 Le 07/03/2017, à 18:48

enebre

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

C'est une belle alternative, mais je ne sais pas du tout ou la placer dans le script pour que ça n'interfère pas avec les autres hébergeurs d'images disponibles dans le script.


On n'écrit pas un "soucie", mais un "souci"
Insérer une miniature vers l' image pix.toile-libre.org voir aussi image et ici ou par script
Balises codes exemple

Hors ligne

#1909 Le 07/03/2017, à 19:52

erresse

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

@enebre:
Ne penses-tu pas qu'il serait préférable de débattre de ces modifications dans le fil dédié à PixUp ?
Si au bout du compte il s'avère possible d'intégrer ton idée au script, autant que kholo et Anonyme68 viennent apporter leur pierre à l'édifice directement, non ?
Et comme ça, tu n'auras pas a reporter les propositions de ce fil dans l'autre...
big_smile


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#1910 Le 07/03/2017, à 20:03

enebre

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

la suite ici, je n'ai pu scinder qu'une partie la suite ici


On n'écrit pas un "soucie", mais un "souci"
Insérer une miniature vers l' image pix.toile-libre.org voir aussi image et ici ou par script
Balises codes exemple

Hors ligne

#1911 Le 19/03/2017, à 23:46

jlfh0816

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,
Je n'y connais pas grand'chose en lignes de commande aussi je me permets de vous solliciter pour un coup de main.
Voilà, j'ai bidouillé 2 conky qui fonctionnent très bien, aussi bien séparément que simultanément.
Pour les lancer en même temps, j'ai un petit script que j'ai appelé "lancerles2conky.sh" et que voici :

#!/bin/sh
sleep 1
conky -c ~/essai/conkyrc2 &
sleep 1
conky -c ~/essai/conkyrc1 & exit

Pour les arrêter, j'ai un autre petit script que j'ai appelé "tuerles2conky.sh" et que voici :

#!/bin/sh
for i in `ps aux | grep [c]onkyrc1 |awk '{ print $2}'`; do kill -9 $i;done;
for i in `ps aux | grep [c]onkyrc2 |awk '{ print $2}'`; do kill -9 $i;done;

Ces scripts ne sont pas de moi (j'en suis bien incapable), ils ont été glanés sur la toile. Je ne les utilise sans doute pas exactement comme il faudrait mais ils fonctionnent ...

Maintenant, ce que je voudrais faire, c'est faire tenir dans un seul super-script que j'appellerai "stop_and_go.sh" le petit arbre décisionnel suivant:
1°) si "lancerles2conky.sh" tourne déjà alors le stopper avec "tuerles2conky.sh"
2°) par contre, si "lancerles2conky".sh" n'est pas déjà en train de tourner alors le lancer

J'ai lu beaucoup de discussions sur les forums autour de ce sujet mais aucune ne fait exactement ce que je souhaite ou alors elles sont assez complexes à mettre en oeuvre et je ne les comprends pas.

Si d'aventures ce super-script "stop_and_go.sh" pouvait voir le jour, je compte lui adjoindre un lanceur qui me permettrait au final (je l'avoue, c'est mon véritable but ultime !) de lancer mes 2 conky d'un clic et de les tuer d'un autre clic.

Pensez-vous que ce soit réalisable ?
Merci d'avance de votre aide !

Dernière modification par jlfh0816 (Le 20/03/2017, à 00:33)


Xubuntu - Voyager 14.04.5 LTS (64 bits) et Xubuntu - Voyager 16.04.3 LTS (64 bits)

Hors ligne

#1912 Le 20/03/2017, à 00:02

enebre

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Salut, si tu veux t'inspirer de celui-ci.
Reviens nous poster ton résultat ce serait super.

#!/bin/bash

PROG_NAME1="conky1 -c /home/$USER/.conky/conky-perso/loungeradio-linux/conkyrc"	# Nom du programme à  démarrer/arrêter.
PROG_NAME2="mplayer http://www.lounge-radio.com/aacplus.m3u" # Nom du programme à  démarrer/arrêter.

PROCESSPID1=$(pgrep -f /home/$USER/.conky/conky-perso/loungeradio-linux/conkyrc)	# Récupère le PID du processus.
PROCESSPID2=$(pgrep -f "mplayer http://www.lounge-radio.com/aacplus.m3u")	# Récupére le PID du processus.


if [[ "$PROCESSPID1" != ""  && "$PROCESSPID2" != "" ]]; then	# Si les deux processus existe alors on le(s) kill.
        kill $PROCESSPID1 && echo "Stop $PROG_NAME1 (PID: $PROCESSPID1)"
        kill $PROCESSPID2  && echo "Stop $PROG_NAME2 (PID: $PROCESSPID2)"
else	# Si aucun processus on démarre le programme.
        kill $PROCESSPID1 
        $PROG_NAME1 & 
        echo "Start $PROG_NAME1"
        kill $PROCESSPID2  
        $PROG_NAME2 & 
        echo "Start $PROG_NAME2"
        if [[ "$PROCESSPID1" == ""  || "$PROCESSPID2" == "" ]]; then	# Si un des processus n'existe pas alors on le(s) kill.
                kill $PROCESSPID1 && echo "Stop $PROG_NAME1 (PID: $PROCESSPID1)"
                kill $PROCESSPID2  && echo "Stop $PROG_NAME2 (PID: $PROCESSPID2)"
                echo "Il y a eu un souci au lancement tout a été coupé"
        fi
fi

exit 0

On n'écrit pas un "soucie", mais un "souci"
Insérer une miniature vers l' image pix.toile-libre.org voir aussi image et ici ou par script
Balises codes exemple

Hors ligne

#1913 Le 20/03/2017, à 00:30

jlfh0816

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Merci beaucoup enebre de ta réponse super-rapide !  tongue

Je n'ai bien sûr pas encore eu le temps d'essayer ta solution mais je vais le faire le plus vite possible (là, faut que j'aille me coucher, je me lève très tôt demain matin ...).

En attendant, j'ai bidouillé un premier super-script "stop_and_go.sh" qui  a l'air de fonctionner.
J'en ai fait un lanceur et ça a également l'air de fonctionner :  un clic pour démarrer / un deuxième clic pour arrêter  smile
Mais je ne m'emballe pas car je me doute bien que la syntaxe n'est pas propre du tout ... ça reste du niveau bricolage très "amateur" :

#!/bin/bash
if
#------- recherche si conkyrc2 déjà lancé ou pas -------
pgrep -f "conky -c /home/user/essai/conkyrc2"
then
#------- script "tuerles2conky" si ceux-ci sont déjà lancés -------
for i in `ps aux | grep [c]onkyrc1 |awk '{ print $2}'`; do kill -9 $i;done;
for i in `ps aux | grep [c]onkyrc2 |awk '{ print $2}'`; do kill -9 $i;done;
else
#------- script "lancerles2conky" si ceux-ci pas déjà lancés -------
sleep 1
conky -c /home/user/essai/conkyrc2 &
sleep 1
conky -c /home/user/essai/conkyrc1 &
fi

La précaution à prendre : ça ne fonctionne qu'avec les chemins réels (/home/user/conkyrc2) et pas avec les chemins relatifs (~/essai/conkyrc2), surtout pour écrire la commande du lanceur.
Sinon, si quelqu'un peut rendre le code plus "propre", je lui en serai reconnaissant !

J'essaye ta proposition de script dès que possible enebre et je te tiens au courant de l'évolution. Encore merci de ton aide !

Dernière modification par jlfh0816 (Le 20/03/2017, à 10:59)


Xubuntu - Voyager 14.04.5 LTS (64 bits) et Xubuntu - Voyager 16.04.3 LTS (64 bits)

Hors ligne

#1914 Le 20/03/2017, à 11:44

kholo

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

salut,
si Conky tourne tuer conky :

wmctrl -c Conky

voire, on peux utiliser plus précisément :

wmctrl -c "Conky ($(hostname))"

NB : pour voir les programmes qui tournent
et la recherche à mettre :

wmctrl -l

wink

PS :

jlfh0816 a écrit :

La précaution à prendre : ça ne fonctionne qu'avec les chemins réels (/home/user/conkyrc2) et pas avec les chemins relatifs (~/essai/conkyrc2), surtout pour écrire la commande du lanceur.

/home/user/conkyrc2 = $HOME/conkyrc2

Dernière modification par kholo (Le 20/03/2017, à 11:55)

Hors ligne

#1915 Le 20/03/2017, à 13:23

jlfh0816

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

@kholo
Merci beaucoup de ta réponse.
Je ne connais pas encore wmctrl mais je vais de ce pas m'informer, qui sait, ça pourrait sans doute m'être très utile.
Encore merci !


Xubuntu - Voyager 14.04.5 LTS (64 bits) et Xubuntu - Voyager 16.04.3 LTS (64 bits)

Hors ligne

#1916 Le 14/07/2017, à 19:45

Jaurug

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Titre:
Internet Gérer transmission-gtk selon l'état du VPN

Bonjour,
Le script démarre ou arrête transmission-gtk selon que la connexion VPN est up ou down.
C'est une réécriture fortement simplifiée d'un ancien script.
Il utilise "nmcli".
#
Il comporte une ligne à adapter:

nmcli -p con up uuid 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8    #Retry the VPN

et peut-être

connected=`nmcli -p c | grep -c "vpn             enp1s0"`    
###############################################
#!/bin/bash
#This program stops a program when your VPN connection is lost then restarts it after the connection is re-established.

#Attmept a VPN connection until connected
function connectVPN()
{
	while :		#If the connection is just started or lost, try to reconnect then break out once connected.
	do
		connected=`nmcli -p c | grep -c "vpn             enp1s0"`	#Store the current state of the VPN connection.
		if [ "$connected" = "1" ]; then
			echo "connectVPN: vpn up"
			echo ""
			transmission-gtk &
			break
		else
			echo "connectVPN: vpn down, Attempting VPN connection in 10 seconds."
			sleep 10	#Give the VPN time to recover so we don't abuse it with reconnection requests.
			nmcli -p con up uuid 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8 	#Retry the VPN
		fi
		done
}
#
#Monitor the VPN and secure VPN dependancies.
connectVPN
date
while true; do
	vpnstring=$(nmcli -p c | grep -c "vpn             enp1s0")	#Define a string to test, 0 = no connection, 1 = connected.
	case $vpnstring in
	"0")
		date
		killall "transmission-gtk"
		connectVPN
	;;
	"1")
		sleep 5               
	;;
	esac
done

Modération : merci à l'avenir d'utiliser les balises code (explications ici).

Dernière modification par cqfd93 (Le 14/07/2017, à 20:07)

Hors ligne

#1917 Le 15/07/2017, à 10:02

kholo

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

@Jaurug

#!/bin/bash
# ----------------------------------------------
nomlogiciel="${0##*/}"
FONCTION="Internet Gérer transmission-gtk selon l'état du VPN
'#This program stops a program when your VPN connection is lost then restarts 
it after the connection is re-established.'

Ce script démarre ou arrête transmission-gtk selon que la connexion VPN est up ou down.
C'est une réécriture fortement simplifiée d'un ancien script.
Il utilise 'nmcli'.
#
Il comporte une des valeurs à adapter:
"
VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
# Jaurug
# https://forum.ubuntu-fr.org/viewtopic.php?pid=21762286#p21762286
# 
# ----------------------------------------------
echo "lancement $nomlogiciel..." ;
# ************************************************
#-initialisation
function _initialisation () {
	# echo "ouverture du journal" ;
	_journal ;
	journal "*******************initialisation*******************" ;

	INTERFACE_RESEAU="enp1s0"
	UUID="2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8"
	TIME_BEFORE_RETRY=10
	FICHIER_LOG="$nomlogiciel.log"
	PROGRAMME="transmission-gtk"

}
_initialisation ;
# ************************************************
# ETAGE JOURNAL
function _journal {
	if [ -f "$FICHIER_LOG" ]
	then
		# echo "vide le log : $FICHIER_LOG..."
		> "$FICHIER_LOG"
	else
		# echo "Création du fichier de log : $FICHIER_LOG"
		touch "$FICHIER_LOG"
	fi
	# echo "terminé"
}
function journal {
	echo -e "$@" >> "$FICHIER_LOG"
}

# ************************************************
#Attempt a VPN connection until connected
function connectVPN()
{
	while :		#If the connection is just started or lost, try to reconnect then break out once connected.
	do
		#Store the current state of the VPN connection.
		# connected=$(nmcli -p c | grep -c "vpn             $INTERFACE_RESEAU")
		connected=$(nmcli -p c | grep -c "vpn" | grep -c "$INTERFACE_RESEAU")
		if [ "$connected" = "1" ]; then
			journal "connectVPN: vpn up"
			journal ""
			# transmission-gtk &
			"${PROGRAMME}" &
			break
		else
			journal "connectVPN: vpn down, Attempting VPN connection in 10 seconds."
			sleep $TIME_BEFORE_RETRY	#Give the VPN time to recover so we don't abuse it with reconnection requests.
			#Retry the VPN
			nmcli -p con up uuid $UUID
		fi
		done
}

function _main()
{
	journal "$(date)"
	#Monitor the VPN and secure VPN dependancies.
	connectVPN 

	while true; do
		#Define a string to test, 0 = no connection, 1 = connected.
		# vpnstring=$(nmcli -p c | grep -c "vpn             enp1s0")
		vpnstring=$(nmcli -p c | grep -c "vpn" | grep -c "$INTERFACE_RESEAU")
		case $vpnstring in
		"0")
			journal "$(date)"
			killall "transmission-gtk"
			connectVPN
		;;
		"1")
			sleep 5               
		;;
		esac
	done
}
_main ;

exit 0

Hors ligne

#1918 Le 14/12/2017, à 22:57

Escatrag

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Salut à tous !
En bon libriste, je partage un script que j'ai fait car cela m’énervait de ne pas savoir quand Firefox avait fini de télécharger un fichier. J'ai donc fait un script pour cela !

Pour installer les dépendances ainsi que notifyOSD (qui n'est pas necessaire, mais qui permet de custom ses notifs)

sudo add-apt-repository ppa:leolik/leolik
sudo apt update
sudo apt install libnotify-bin
pkill notify-osd
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install notifyosdconfig
sudo apt-get update
sudo apt-get install incron
sudo apt-get upgrade

puis ouvrir un terminal et mettre:

sudo nano /etc/incron.allow

et y mettre son nom (trouvable avec un simple echo $USER tongue)

Une fois cela fait, dans ce même terminal, taper:

/home/<votreUsername>/Téléchargements IN_MOVED_FROM /home/<votreUsername>/<cheminDuFichier>/exec_incron $#

et le fichier en question, exec_incron, est dispo ici:

#!/bin/bash
export DISPLAY=:0.0
#conversion de l'extension en minuscule
ext="${1##*.}"
ext="${ext,,}"
file_without_ext="${1%.*}"
if [ ${ext} == 'part' ]
then
	/usr/bin/notify-send "Le fichier ${file_without_ext} a bien été téléchargé"
fi

Have fun !

Hors ligne

#1919 Le 17/03/2018, à 13:01

mecanotox

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour à tous.

Petit scripte que j'utilise depuis quelques années avec quelques pseudo optimisations.
Je l'ai placé dans /usr/local/bin

Globalement, je charge à chaque ouverture de session mes profiles firefox, thunderbird, chromium, etc...
J'ai également mis en Ram (via tmpfs) dans /dev/shm un certains nombre de dossier caches et temporaires qui peuvent être supprimé à l'arrêt de l'ordinateur, sans avoir de conséquences sur le profile. N'hésitez pas à donner vos avis et à l'améliorer smile

#!/bin/bash
#/*
# * ----------------------------------------------------------------------------
# * UBook-AM - Gestion UBook
# * Description : Commande de gestion de la station de travail
# * Version : Prod
# * Dependencies :
# * Validated system : Ubuntu 14.04 16.04
# * ----------------------------------------------------------------------------
# */
export DISPLAY=:0.0

#/*
# * Default Var
# */
app_name="UBook-Cli"
bin_dir="/usr/local/sbin"

# *
# * Global Var
# */
notify_app="notify-send"
file_manager="nautilus"
shm_dir="/var/run/shm"
profiles_dir="Private"

# *
# * Chromium Commands
# */
# * *
# * * Chromium Profile Save
# * */
function fcn_chromium_profile_save {
    $notify_app "[Demarrage] Sauvegarde du profile de Chromium" -i chromium-browser
	echo "[Demarrage] Sauvegarde du profile de de Chromium $HOME/.config/chromium"
    killall chromium-browser
    cd $HOME/.config/chromium
    tar zcvf chromium.tgz --add-file=Default/ --add-file="First Run" --add-file="Profile 1"
    mv $HOME/Private/.chromium.tgz $HOME/Private/.chromium.tgz.old
    mv $HOME/.config/chromium/chromium.tgz $HOME/Private/.chromium.tgz
    $notify_app "[Fin] Sauvegarde du profile de Chromium" -i chromium-browser
	echo "[Fin] Sauvegarde du profile de de Chromium $HOME/.config/chromium"
}
# * *
# * * Chromium Profile Load
# * */
function fcn_chromium_profile_load {
    $notify_app "[Demarrage] Chargement Profile Chromium en Ram" -i chromium-browser
    echo "[Demarrage] Chargement Profile Chromium en Ram"
    killall chromium-browser
    sleep 2
    if [ -d $HOME/.config/chromium ] || [ -L $HOME/.config/chromium ]; then
        rm -rf $HOME/.config/chromium
        if [ -d $shm_dir/$USER/.chromium ]; then
            rm -rf $shm_dir/$USER/.chromium
            mkdir $shm_dir/$USER/.chromium
            tar -xvzf $HOME/$profiles_dir/.chromium.tgz -C $shm_dir/$USER/.chromium/
            ln -s $shm_dir/$USER/.chromium $HOME/.config/chromium
        else
            mkdir $shm_dir/$USER/.chromium
            tar -xvzf $HOME/$profiles_dir/.chromium.tgz -C $shm_dir/$USER/.chromium/
            ln -s $shm_dir/$USER/.chromium $HOME/.config/chromium
        fi
    else
        if [ -d $shm_dir/$USER/.chromium ]; then
            rm -rf $shm_dir/$USER/.chromium
            mkdir $shm_dir/$USER/.chromium
            tar -xvzf $HOME/$profiles_dir/.chromium.tgz -C $shm_dir/$USER/.chromium/
            ln -s $shm_dir/$USER/.chromium $HOME/.config/chromium
        else
            mkdir $shm_dir/$USER/.chromium
            tar -xvzf $HOME/$profiles_dir/.chromium.tgz -C $shm_dir/$USER/.chromium/
            ln -s $shm_dir/$USER/.chromium $HOME/.config/chromium
        fi
    fi
    $notify_app "[Fin] Chargement Profile Chromium en Ram" -i chromium-browser
    echo "[Fin] Chargement Profile Chromium en Ram"
}
# * *
# * * Chromium PepperFlash Update
# * */
function fcn_chromium_pepperflash_update {
	$notify_app "[Démarrage] Mise à jour Plugin Pepper Flash" -i chromium
    echo "[Démarrage] Mise à jour Bridge Plugin Pepper Flash"
	sudo update-pepperflashplugin-nonfree --status
	echo ""
	echo "Voulez-vous mettre a jour le plugin ? [O/N]"
	echo ""
	read choix_update_pepperflash
	if [ $choix_update_pepperflash = "O" ]; then
		sudo update-pepperflashplugin-nonfree --install

	else
			$notify_app "[Annulation] Mise à jour Plugin Pepper Flash" -i chromium
			echo "[Annulation] Mise à jour Bridge Plugin Pepper Flash"
	fi
	$notify_app "[Fin] Mise à jour Plugin Pepper Flash" -i chromium
    echo "[Fin] Mise à jour Plugin Pepper Flash"
}
# *
# * Firefox Commands
# */
# * *
# * * Firefox Profile Load
# * */
function fcn_firefox_profile_load {
    $notify_app "[Demarrage] Chargement Profile Firefox en Ram" -i firefox
    echo "[Demarrage] Chargement Profile Firefox en Ram"
    killall firefox
    sleep 2
    if [ -d $HOME/.mozilla ] || [ -L $HOME/.mozilla ]; then
        rm -rf $HOME/.mozilla
        if [ -d $shm_dir/$USER/.firefox ]; then
            rm -rf $shm_dir/$USER/.firefox
            mkdir $shm_dir/$USER/.firefox
            tar -xvzf $HOME/$profiles_dir/.firefox.tgz -C $shm_dir/$USER/.firefox/
            ln -s $shm_dir/$USER/.firefox $HOME/.mozilla
        else
            mkdir $shm_dir/$USER/.firefox
            tar -xvzf $HOME/$profiles_dir/.firefox.tgz -C $shm_dir/$USER/.firefox/
            ln -s $shm_dir/$USER/.firefox $HOME/.mozilla
        fi
    else
        if [ -d $shm_dir/$USER/.firefox ]; then
            rm -rf $shm_dir/$USER/.firefox
            mkdir $shm_dir/$USER/.firefox
            tar -xvzf $HOME/$profiles_dir/.firefox.tgz -C $shm_dir/$USER/.firefox/
            ln -s $shm_dir/$USER/.firefox $HOME/.mozilla
        else
            mkdir $shm_dir/$USER/.firefox
            tar -xvzf $HOME/$profiles_dir/.firefox.tgz -C $shm_dir/$USER/.firefox/
            ln -s $shm_dir/$USER/.firefox $HOME/.mozilla
        fi
    fi
    $notify_app "[Fin] Chargement Profile Firefox en Ram" -i firefox
    echo "[Fin] Chargement Profile Firefox en Ram"
}
# * *
# * * Firefox Profile Save
# * */
function fcn_firefox_profile_save {
    $notify_app "[Demarrage] Sauvegarde du profile de Firefox" -i firefox
	echo "[Demarrage] Sauvegarde du profile de de Firefox $HOME/.mozilla"
    killall firefox
    cd $HOME/.mozilla
    tar zcvf firefox.tgz --add-file=extensions/ --add-file=firefox/
    mv $HOME/Private/.firefox.tgz $HOME/Private/.firefox.tgz.old
    mv $HOME/.mozilla/firefox.tgz $HOME/Private/.firefox.tgz
    $notify_app "[Fin] Sauvegarde du profile de Firefox" -i firefox
	echo "[Fin] Sauvegarde du profile de de Firefox $HOME/.mozilla"
}
# *
# * Thunderbird Commands
# */
# * *
# * * Thunderbird Profile Save
# * */
function fcn_thunderbird_profile_save {
    $notify_app "[Demarrage] Sauvegarde du profile de Thunderbird dans $HOME/.thunderbird" -i thunderbird
	echo "[Demarrage] Sauvegarde du profile de de Thunderbird dans $HOME/.thunderbird"
    killall thunderbird
    cd $HOME/.thunderbird
    tar zcvf thunderbird.tgz --add-file=profiles.ini --add-file=$USER.default/
    mv $HOME/Private/.thunderbird.tgz $HOME/Private/.thunderbird.tgz.old
    mv thunderbird.tgz $HOME/Private/.thunderbird.tgz
	$notify_app "[Fin] Sauvegarde du profile de Thunderbird dans $HOME/.thunderbird" -i thunderbird
	echo "[Fin] Sauvegarde du profile de de Thunderbird dans $HOME/.thunderbird"
}
# * *
# * * Thunderbird Profile Load
# * */
function fcn_thunderbird_profile_load {
    $notify_app "[Demarrage] Chargement Profile Thunderbird en Ram" -i thunderbird
    echo "[Demarrage] Chargement Profile Thunderbird en Ram"
    killall thunderbird
    sleep 2
    if [ -d $HOME/.thunderbird ] || [ -L $HOME/.thunderbird ]; then
        rm -rf $HOME/.thunderbird
        if [ -d $shm_dir/$USER/.thunderbird ]; then
            rm -rf $shm_dir/$USER/.thunderbird
            mkdir $shm_dir/$USER/.thunderbird
            tar -xvzf $HOME/$profiles_dir/.thunderbird.tgz -C $shm_dir/$USER/.thunderbird/
            ln -s $shm_dir/$USER/.thunderbird $HOME/.thunderbird
        else
            mkdir $shm_dir/$USER/.thunderbird
            tar -xvzf $HOME/$profiles_dir/.thunderbird.tgz -C $shm_dir/$USER/.thunderbird/
            ln -s $shm_dir/$USER/.thunderbird $HOME/.thunderbird
        fi
    else
        if [ -d $shm_dir/$USER/.thunderbird ]; then
            rm -rf $shm_dir/$USER/.thunderbird
            mkdir $shm_dir/$USER/.thunderbird
            tar -xvzf $HOME/$profiles_dir/.thunderbird.tgz -C $shm_dir/$USER/.thunderbird/
            ln -s $shm_dir/$USER/.thunderbird $HOME/.thunderbird
        else
            mkdir $shm_dir/$USER/.thunderbird
            tar -xvzf $HOME/$profiles_dir/.thunderbird.tgz -C $shm_dir/$USER/.thunderbird/
            ln -s $shm_dir/$USER/.thunderbird $HOME/.thunderbird
        fi
    fi
    $notify_app "[Fin] Chargement Profile Thunderbird en Ram" -i thunderbird
    echo "[Fin] Chargement Profile Thunderbird en Ram"
}

# *
# * SHM Commands
# */
# * *
# * * SHM Init
# * */
function fcn_shm_init {
    if [ -d $shm_dir/$USER ]; then
        rm -rf $shm_dir/$USER
        mkdir $shm_dir/$USER
    else
        mkdir $shm_dir/$USER
    fi
}
# * *
# * * SHM Tmp Files Load
# * */
function fcn_shm_tmpfiles_load {
    $notify_app "[Demarrage] Chargement fichiers temporaires dossier personnel en Ram" -i $file_manager
    echo "[Demarrage] Chargement fichiers temporaires dossier personnel en Ram"
    killall chromium-browser
    killall thunderbird
    killall vlc
    # * * * Adobe Cache Folders * * */#
    if [ -d $shm_dir/$USER/.adobe ]; then
        if [ -d $shm_dir/$USER/.adobe ]; then
            rm -rf $shm_dir/$USER/.adobe/*
            rm -rf $HOME/.adobe
            ln -s $shm_dir/$USER/.adobe $HOME/.adobe
        else
        	mkdir $shm_dir/$USER/.adobe
            rm -rf $HOME/.adobe
            ln -s $shm_dir/$USER/.adobe $HOME/.adobe
        fi
    else
        mkdir $shm_dir/$USER/.adobe
        rm -rf $HOME/.adobe
               mkdir $shm_dir/$USER/.adobe
            rm -rf $shm_dir/$USER/.adobe/*
            ln -s $shm_dir/$USER/.adobe $HOME/.adobe
    fi
    # * * * Macromedia Cache Folders * * */#
    if [ -d $shm_dir/$USER/.macromedia ]; then
        if [ -d $shm_dir/$USER/.macromedia ]; then
            rm -rf $shm_dir/$USER/.macromedia/*
            rm -rf $HOME/.macromedia
            ln -s $shm_dir/$USER/.macromedia $HOME/.macromedia
        else
        	mkdir $shm_dir/$USER/.macromedia
            rm -rf $HOME/.macromedia
            ln -s $shm_dir/$USER/.macromedia $HOME/.macromedia
        fi
    else
        mkdir $shm_dir/$USER/.macromedia
            rm -rf $HOME/.macromedia
            ln -s $shm_dir/$USER/.macromedia $HOME/.macromedia
    fi
    # * * * Thumbnails Cache Folders * * */#
    if [ -d $shm_dir/$USER/.thumbnails ]; then
        if [ -d $shm_dir/$USER/.thumbnails ]; then
            rm -rf $shm_dir/$USER/.thumbnails/*
            rm -rf $HOME/.thumbnails
            ln -s $shm_dir/$USER/.thumbnails $HOME/.thumbnails
        else
        	mkdir $shm_dir/$USER/.thumbnails
            rm -rf $HOME/.thumbnails
            ln -s $shm_dir/$USER/.thumbnails $HOME/.thumbnails
        fi
    else
        mkdir $shm_dir/$USER/.thumbnails
        rm -rf $HOME/.thumbnails
        ln -s $shm_dir/$USER/.thumbnails $HOME/.thumbnails
    fi
        if [ -d $shm_dir/$USER/.cache ]; then
        if [ -d $shm_dir/$USER/.cache/thumbnails ]; then
            rm -rf $shm_dir/$USER/.cache/thumbnails/*
            rm -rf $HOME/.cache/thumbnails
            ln -s $shm_dir/$USER/.cache/thumbnails $HOME/.cache/thumbnails
        else
            mkdir $shm_dir/$USER/.cache/thumbnails
            rm -rf $shm_dir/$USER/.cache/thumbnails/*
            rm -rf $HOME/.cache/thumbnails
            ln -s $shm_dir/$USER/.cache/thumbnails $HOME/.cache/thumbnails
        fi
    else
        mkdir $shm_dir/$USER/.cache
        mkdir $shm_dir/$USER/.cache/thumbnails
        rm -rf $HOME/.cache/thumbnails
        ln -s $shm_dir/$USER/.cache/thumbnails $HOME/.cache/thumbnails
    fi
    # * * * VLC Cache Folders * * */#
    if [ -d $shm_dir/$USER/.cache ]; then
        if [ -d $shm_dir/$USER/.cache/vlc ]; then
            rm -rf $shm_dir/$USER/.cache/vlc/*
            rm -rf $HOME/.cache/vlc
            ln -s $shm_dir/$USER/.cache/vlc $HOME/.cache/vlc
        else
            mkdir $shm_dir/$USER/.cache/vlc
            rm -rf $shm_dir/$USER/.cache/vlc/*
            rm -rf $HOME/.cache/vlc
            ln -s $shm_dir/$USER/.cache/vlc $HOME/.cache/vlc
        fi
    else
        mkdir $shm_dir/$USER/.cache
        mkdir $shm_dir/$USER/.cache/vlc
        rm -rf $HOME/.cache/vlc
        ln -s $shm_dir/$USER/.cache/vlc $HOME/.cache/vlc
    fi
    # * * * Thunderbird Cache Folders * * */#
    if [ -d $shm_dir/$USER/.cache ]; then
        if [ -d $shm_dir/$USER/.cache/thunderbird ]; then
            rm -rf $shm_dir/$USER/.cache/thunderbird/*
            rm -rf $HOME/.cache/thunderbird
            ln -s $shm_dir/$USER/.cache/thunderbird $HOME/.cache/thunderbird
        else
            mkdir $shm_dir/$USER/.cache/thunderbird
            rm -rf $shm_dir/$USER/.cache/thunderbird/*
            rm -rf $HOME/.cache/thunderbird
            ln -s $shm_dir/$USER/.cache/thunderbird $HOME/.cache/thunderbird
        fi
    else
        mkdir $shm_dir/$USER/.cache
        mkdir $shm_dir/$USER/.cache/thunderbird
        rm -rf $HOME/.cache/thunderbird
        ln -s $shm_dir/$USER/.cache/thunderbird $HOME/.cache/thunderbird
    fi
    # * * * Firefox Cache Folders * * */#
    if [ -d $shm_dir/$USER/.cache ]; then
        if [ -d $shm_dir/$USER/.cache/mozilla ]; then
            rm -rf $shm_dir/$USER/.cache/mozilla/*
            rm -rf $HOME/.cache/mozilla
            ln -s $shm_dir/$USER/.cache/mozilla $HOME/.cache/mozilla
        else
            mkdir $shm_dir/$USER/.cache/mozilla
            rm -rf $shm_dir/$USER/.cache/mozilla/*
            rm -rf $HOME/.cache/mozilla
            ln -s $shm_dir/$USER/.cache/mozilla $HOME/.cache/mozilla
        fi
    else
        mkdir $shm_dir/$USER/.cache
        mkdir $shm_dir/$USER/.cache/mozilla
        rm -rf $HOME/.cache/mozilla
        ln -s $shm_dir/$USER/.cache/mozilla $HOME/.cache/mozilla
    fi
    # * * * Chromium Cache Folders * * */#
    if [ -d $shm_dir/$USER/.cache ]; then
        if [ -d $shm_dir/$USER/.cache/chromium ]; then
            rm -rf $shm_dir/$USER/.cache/chromium/*
            rm -rf $HOME/.cache/chromium
            ln -s $shm_dir/$USER/.cache/chromium $HOME/.cache/chromium
        else
            mkdir $shm_dir/$USER/.cache/chromium
            rm -rf $shm_dir/$USER/.cache/chromium/*
            rm -rf $HOME/.cache/chromium
            ln -s $shm_dir/$USER/.cache/chromium $HOME/.cache/chromium
        fi
    else
        mkdir $shm_dir/$USER/.cache
        mkdir $shm_dir/$USER/.cache/chromium
        rm -rf $HOME/.cache/chromium
        ln -s $shm_dir/$USER/.cache/chromium $HOME/.cache/chromium
    fi
    # * * * Virt Manager Cache Folders * * */#
    if [ -d $shm_dir/$USER/.cache ]; then
        if [ -d $shm_dir/$USER/.cache/virt-manager ]; then
            rm -rf $shm_dir/$USER/.cache/virt-manager/*
            rm -rf $HOME/.cache/virt-manager
            ln -s $shm_dir/$USER/.cache/virt-manager $HOME/.cache/virt-manager
        else
            mkdir $shm_dir/$USER/.cache/virt-manager
            rm -rf $shm_dir/$USER/.cache/virt-manager/*
            rm -rf $HOME/.cache/virt-manager
            ln -s $shm_dir/$USER/.cache/virt-manager $HOME/.cache/virt-manager
        fi
    else
        mkdir $shm_dir/$USER/.cache
        mkdir $shm_dir/$USER/.cache/virt-manager
        rm -rf $HOME/.cache/virt-manager
        ln -s $shm_dir/$USER/.cache/virt-manager $HOME/.cache/virt-manager
    fi
    $notify_app "[Fin] Chargement fichiers temporaires dossier personnel en Ram" -i $file_manager
    echo "[Fin] Chargement fichiers temporaires dossier personnel en Ram"
}
# * *
# * * SHM Clean
# * */
function fcn_shm_clean {
        killall thunderbird
        killall chromium-browser
        killall vlc
        rm -rf $shm_dir/$USER
        rm -rf $HOME/.{adobe,macromedia,thumbnails,thunderbird}
        rm -rf $HOME/.config/{chromium}
        rm -rf $HOME/.cache/{chromium,thumbnails,vlc}
}
# * *
# * * SHM Enable
# * */
function fcn_shm_enable {
	$notify_app "[Demarrage] Activation optimisation UBook" -i $file_manager
    echo "[Demarrage] Activation optimisation UBook"
    fcn_shm_clean
    fcn_shm_init
	fcn_shm_tmpfiles_load
	fcn_chromium_profile_load
    fcn_firefox_profile_load
	fcn_thunderbird_profile_load
	$notify_app "[Fin] Activation optimisation UBook" -i $file_manager
    echo "[Fin] Activation optimisation UBook"
}
# * *
# * * SHM Disable
# * */
function fcn_shm_disable {
	$notify_app "[Demarrage] Désactivation optimisation UBook" -i $file_manager
    echo "[Demarrage] Désactivation optimisation UBook"
	fcn_shm_clean
	rm -rf $shm_dir/$USER
    $notify_app "[Fin] Désactivation optimisation UBook" -i $file_manager
    echo "[Fin] Désactivation optimisation UBook"
}

# *
# * System Commands
# */
# * *
# * * System Update
# * */
function fcn_system_update {
	$notify_app "[Démarrage] Mise à jour OS" -i gnome-system-log
    echo "[Démarrage] Mise à jour OS"
	echo ""
	echo "Voulez-vous mettre a jour le système ? [O/N]"
	echo ""
	read choix_system_update
	if [ $choix_system_update = "O" ]; then
		sudo aptitude update
        sudo aptitude dist-upgrade
        # * */ Fix - Boucle login
        $notify_app "[Démarrage] Patch - Boucle après identification" -i gnome-system-log
        echo "[Démarrage] Patch - Boucle après identification"
        echo "Bureau utilisateur : " $USER
        echo ""
        sleep 5
        chown -R $USER:$USER $HOME/.Xauthority
        chown -R $USER:$USER $HOME/.dbus
        chown -R $USER:$USER $HOME/.xsession-errors
        $notify_app "[Fin] Patch - Boucle après identification" -i gnome-system-log
        echo "[Fin] Patch - Boucle après identification"
	else
			$notify_app "[Annulation] Mise à jour OS" -i gnome-system-log
			echo "[Annulation] Mise à jour OS"
	fi
    $notify_app "[Fin] Mise à jour OS" -i gnome-system-log
    echo "[Fin] Mise à jour OS"
}
# * *
# * * Old Kernel Remove
# * */
function fcn_system_old_kernel_remove {
	$notify_app "[Démarrage] Suppression ancien kernel" -i gnome-system-log
    echo "[Démarrage] Suppression ancien kernel"
	echo ""
	echo "Saisissez la version du kernel"
	echo ""
	read kernel_version
	if [ $kernel_version != null ]; then
        sudo aptitude --purge remove linux-headers-$kernel_version linux-headers-$kernel_version-generic linux-image-$kernel_version-generic linux-image-extra-$kernel_version-generic linux-signed-image-$kernel_version-generic
	else
			$notify_app "[Erreur] Aucune version saisie" -i gnome-system-log
			echo "[Erreur] Aucune version saisie"
	fi
	$notify_app "[Fin] Suppression ancien kernel" -i gnome-system-log
    echo "[Fin] Suppression ancien kernel"
}
# * *
# * * Manual Kernel Install
# * */
function fcn_system_manual_kernel_install {
	$notify_app "[Démarrage] Installation manuelle Kernel" -i gnome-system-log
    echo "[Démarrage] Installation manuelle Kernel"
	echo ""
	echo "Saisissez la version du kernel"
	echo ""
	read kernel_version
	if [ $kernel_version != null ]; then
        sudo aptitude install linux-headers-$kernel_version linux-headers-$kernel_version-generic linux-image-$kernel_version-generic linux-image-extra-$kernel_version-generic linux-signed-image-$kernel_version-generic
	sudo update-grub2
	else
			$notify_app "[Erreur] Aucune version saisie" -i gnome-system-log
			echo "[Erreur] Aucune version saisie"
	fi
	$notify_app "[Fin] Installation manuelle Kernel" -i gnome-system-log
    echo "[Fin] Installation manuelle Kernel"
}
# * *
# * * HDD Short Test
# * */
function fcn_system_hdd_short_test {
    $notify_app "[Demarrage] Vérification rapide disque OS" -i gnome-system-log
    echo "[Demarrage] Vérification rapide disque OS" -i gnome-system-log
    if [ $EUID -ne 0 ]; then
        $notify_app "[Erreur] Vérification rapide disque OS - Compte root necessaire" -i gnome-system-log
        echo "[Erreur] Vérification rapide disque OS - Compte root necessaire"
    else
        /usr/sbin/smartctl --test=short /dev/sda
    fi
    $notify_app "[Fin] Vérification rapide disque OS" -i gnome-system-log
    echo "[Fin] Vérification rapide disque OS" -i gnome-system-log
}
# * *
# * * HDD Long Test
# * */
function fcn_system_hdd_long_test {
    $notify_app "[Demarrage] Vérification complète disque OS" -i gnome-system-log
    echo "[Demarrage] Vérification complète disque OS" -i gnome-system-log
    if [ $EUID -ne 0 ]; then
        $notify_app "[Erreur] Vérification complète disque OS - Compte root necessaire" -i gnome-system-log
        echo "[Erreur] Vérification complète disque OS - Compte root necessaire"
    else
        /usr/sbin/smartctl --test=long /dev/sda
    fi
    $notify_app "[Fin] Vérification complète disque OS" -i gnome-system-log
    echo "[Fin] Vérification complète disque OS" -i gnome-system-log
}

# * *
# * * Backup Email Notification
# * */
function fcn_system_backup_email_notify {
    echo "" >> /tmp/$HOSTNAME"_backup_email_notify.txt"
    echo "Sauvegarde "$HOSTNAME" nécessaire vers disque de sauvegarde." >> /tmp/$HOSTNAME"_backup_email_notify.txt"
    echo ""
    mail -s "Sauvegarde-Complète_"$HOSTNAME $UBOOK_DEFAULT_MAIL_SENDER < /tmp/$HOSTNAME"_backup_email_notify.txt"
    rm -rf /tmp/$HOSTNAME"_backup_email_notify.txt"
}

# *
# * UBook-Cli Menu
# */
case $1 in
	help)
		echo ""
		exit 1
	;;
    chromium-profile-save)
        fcn_chromium_profile_save
    ;;
    chromium-profile-load)
        fcn_chromium_profile_load
    ;;
	chromium-pepperflash-update)
		fcn_chromium_pepperflash_update
	;;
    firefox-profile-save)
        fcn_firefox_profile_save
    ;;
    firefox-profile-load)
        fcn_firefox_profile_load
    ;;
    thunderbird-profile-save)
        fcn_thunderbird_profile_save
    ;;
    thunderbird-profile-load)
        fcn_thunderbird_profile_load
    ;;
    shm-enable)
        fcn_shm_enable
    ;;
    shm-disable)
        fcn_shm_disable
    ;;
    system-update)
        fcn_system_update
    ;;
    old-kernel-remove)
        fcn_system_old_kernel_remove
    ;;
    manual-kernel-install)
        fcn_system_manual_kernel_install
    ;;
    short-hdd-test)
        fcn_system_hdd_short_test
    ;;
    long-hdd-test)
        fcn_system_hdd_long_test
    ;;
    backup-email-notify)
        fcn_system_backup_email_notify
    ;;
	*)
        echo "Usage: "$bin_dir"/"$app_name" {chromium-profile-save|chromium-profile-load|chromium-pepperflash-update|firefox-profile-save|firefox-profile-load|thunderbird-profile-save|thunderbird-profile-load|shm-enable|shm-disable|system-update|old-kernel-remove|manual-kernel-install|short-hdd-test|long-hdd-test|backup-email-notify}"
        exit 1
    ;;
esac
#/*
# * ----------------------------------------------------------------------------
# * "THE BEER-WARE LICENSE" (Revision 42):
# * <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
# * can do whatever you want with this stuff. If we meet some day, and you think
# * this stuff is worth it, you can buy me a beer in return Poul-Henning Kamp
# * ----------------------------------------------------------------------------
# */

Dernière modification par mecanotox (Le 17/03/2018, à 13:02)

Hors ligne

#1920 Le 17/03/2018, à 14:21

uboops

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

mecanotox a écrit :

... N'hésitez pas à donner vos avis et à l'améliorer...

Bonjour,
Ca me fait penser a Cfengine.
https://fr.wikipedia.org/wiki/CFEngine


Ubuntu 16.04-LTS, MX17-LTS, Win7-LTS - avec rEFInd + Grub ... et ncdu, Timeshift ... pour le LTS aussi ;-)

Hors ligne

#1921 Le 18/03/2018, à 14:08

cracolinux

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Salut Mecanotox, il sert à quoi ce script ? il te fait gagner quoi ?


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#1922 Le 18/03/2018, à 14:28

ljere

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

d’après ce que j'en déduis il place tous les caches des différents programmes (chrome, firefox, thunderbird, etc...) dans la ram, donc plus de ralentissement du à l'écriture.


astuce nvidia FX5200
Toshiba satellite_c670d-11l ubuntu 17.10 64 bit

Hors ligne

#1923 Le 18/03/2018, à 15:56

bruno

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,

Si je lance le script de mecanotox avec l'argument firefox-profile-load cela va supprimer mon dossier .mozilla. Conséquence : je perds mes marques pages, mes mots de passe enregistrés, mes extensions installées, et tous mes réglages… hmm

Dernière modification par bruno (Le 18/03/2018, à 15:56)

Hors ligne

#1924 Le 18/03/2018, à 17:08

enebre

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

J'avais essayé les .cache en ram.
Le souci c'est qu'avec le cache la ram pour firefox, je perds les autorisations données par les sites que je fréquente.
Tel que google qui me demande sans cesse de confirmer mon activité + autorisations captcha, car il  bloque mon accès à gmail pour mes autres applications que firefox.
Un retour à la normal des caches à résolu la situation.

Donc si quelqu'un connait les fichiers/dossiers qui détiennent ces infos et le moyen pour qu'ils restent en place, je suis preneur.


On n'écrit pas un "soucie", mais un "souci"
Insérer une miniature vers l' image pix.toile-libre.org voir aussi image et ici ou par script
Balises codes exemple

Hors ligne

#1925 Le 19/03/2018, à 18:31

Compte anonymisé

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,

mecanotox a écrit :

N'hésitez pas à donner vos avis et à l'améliorer smile

J'hésite pas alors wink

il y a des passages inutilement compliqués,

exemple :

    if [ -d $shm_dir/$USER/.adobe ]; then
        if [ -d $shm_dir/$USER/.adobe ]; then
            rm -rf $shm_dir/$USER/.adobe/*
            rm -rf $HOME/.adobe
            ln -s $shm_dir/$USER/.adobe $HOME/.adobe
        else
        	mkdir $shm_dir/$USER/.adobe
            rm -rf $HOME/.adobe
            ln -s $shm_dir/$USER/.adobe $HOME/.adobe
        fi
    else
        mkdir $shm_dir/$USER/.adobe
        rm -rf $HOME/.adobe
               mkdir $shm_dir/$USER/.adobe
            rm -rf $shm_dir/$USER/.adobe/*
            ln -s $shm_dir/$USER/.adobe $HOME/.adobe
    fi

=

        if [ -d $shm_dir/$USER/.adobe ]
        then
            rm -rf $shm_dir/$USER/.adobe/*
        else
            mkdir $shm_dir/$USER/.adobe
        fi
        rm -rf $HOME/.adobe
        ln -s $shm_dir/$USER/.adobe $HOME/.adobe

moi j'évite de mettre des "cd" dans les scripts, là si les dossiers n'existent pas, le script continue et aura un résultat inattendu.

ligne 11 :

export DISPLAY=:0.0

cette ligne ne peut que te poser des problèmes, je te conseille de la retirer

ligne 536 :

    echo "Sauvegarde "$HOSTNAME" nécessaire vers disque de sauvegarde." >> /tmp/$HOSTNAME"_backup_email_notify.txt"

tu t'embrouilles un peu avec les doubles guillemets non ? smile

"_backup_email_notify.txt" -> pas besoin de protéger ça, il n'y pas de caractères spéciaux
"Sauvegarde "$HOSTNAME" nécessaire vers disque de sauvegarde." -> la tu protèges tout sauf ce qui est utile de protéger, la variable est en-dehors des protections

Bon même je vois pas l’intérêt du script, c'est un bon début

A+