Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

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.

#1901 Le 18/02/2016, à 18: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, à 19: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, à 15: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, à 17:51)


Xubuntu.17.04, 32 bit, mini-pc 2 core-duo, dual-boot win7 et xfce, 4Go ram, ssd 22 Go (15Go pr win + 6Go pr xfce / ) + dd 120 Go (50Go pr win data + 70Go pr xfce /home) actuellement 1.9Go libre sur la partition / de xfce.

Hors ligne

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

Anonyme68

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"

846/2381 jeux linux sur Steam

Vous avez plein d'ISO d'ubuntu ? Une bonne bande passante ? Aimer partager ? Essayer mon script

Hors ligne

#1905 Le 07/03/2017, à 15: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, à 15:45)


Xubuntu.17.04, 32 bit, mini-pc 2 core-duo, dual-boot win7 et xfce, 4Go ram, ssd 22 Go (15Go pr win + 6Go pr xfce / ) + dd 120 Go (50Go pr win data + 70Go pr xfce /home) actuellement 1.9Go libre sur la partition / de xfce.

Hors ligne

#1906 Le 07/03/2017, à 15: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, à 17:50)


Xubuntu.17.04, 32 bit, mini-pc 2 core-duo, dual-boot win7 et xfce, 4Go ram, ssd 22 Go (15Go pr win + 6Go pr xfce / ) + dd 120 Go (50Go pr win data + 70Go pr xfce /home) actuellement 1.9Go libre sur la partition / de xfce.

Hors ligne

#1907 Le 07/03/2017, à 17: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, à 17: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.


Xubuntu.17.04, 32 bit, mini-pc 2 core-duo, dual-boot win7 et xfce, 4Go ram, ssd 22 Go (15Go pr win + 6Go pr xfce / ) + dd 120 Go (50Go pr win data + 70Go pr xfce /home) actuellement 1.9Go libre sur la partition / de xfce.

Hors ligne

#1909 Le 07/03/2017, à 18: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, à 19: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


Xubuntu.17.04, 32 bit, mini-pc 2 core-duo, dual-boot win7 et xfce, 4Go ram, ssd 22 Go (15Go pr win + 6Go pr xfce / ) + dd 120 Go (50Go pr win data + 70Go pr xfce /home) actuellement 1.9Go libre sur la partition / de xfce.

Hors ligne

#1911 Le 19/03/2017, à 22: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 19/03/2017, à 23:33)


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

Hors ligne

#1912 Le 19/03/2017, à 23: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

Xubuntu.17.04, 32 bit, mini-pc 2 core-duo, dual-boot win7 et xfce, 4Go ram, ssd 22 Go (15Go pr win + 6Go pr xfce / ) + dd 120 Go (50Go pr win data + 70Go pr xfce /home) actuellement 1.9Go libre sur la partition / de xfce.

Hors ligne

#1913 Le 19/03/2017, à 23: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, à 09: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, à 10: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, à 10:55)

Hors ligne

#1915 Le 20/03/2017, à 12: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, à 18: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, à 19:07)

Hors ligne

#1917 Le 15/07/2017, à 09: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