#1901 Le 18/02/2016, à 19:08
- kholo
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
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
#1902 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)
Hors ligne
#1903 Le 07/03/2017, à 15: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"
#1904 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)
Hors ligne
#1905 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)
Hors ligne
#1906 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
#1907 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.
Hors ligne
#1908 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...
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 le problème solutionné, 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
#1909 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
Hors ligne
#1910 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 18.04 et 22.04
Hors ligne
#1911 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
Hors ligne
#1912 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 !
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
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 18.04 et 22.04
Hors ligne
#1913 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
PS :
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
#1914 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 18.04 et 22.04
Hors ligne
#1915 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
#1916 Le 15/07/2017, à 09:02
- kholo
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
#!/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
#1917 Le 14/12/2017, à 21: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 )
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
#1918 Le 17/03/2018, à 12: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
#!/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, à 12:02)
Hors ligne
#1919 Le 17/03/2018, à 13:21
- uboops
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
... N'hésitez pas à donner vos avis et à l'améliorer...
Bonjour,
Ca me fait penser a Cfengine.
https://fr.wikipedia.org/wiki/CFEngine
“Au lieu de faire que ce qui fût juste fût fort, on a fait que ce qui fût fort fût juste.” (Blaise Pascal).
Hors ligne
#1920 Le 18/03/2018, à 13:08
- cracolinux
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Salut Mecanotox, il sert à quoi ce script ? il te fait gagner quoi ?
Hors ligne
#1921 Le 18/03/2018, à 13: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.
ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon
Hors ligne
#1922 Le 18/03/2018, à 14: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…
Dernière modification par bruno (Le 18/03/2018, à 14:56)
#1923 Le 18/03/2018, à 16: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.
Hors ligne
#1924 Le 19/03/2018, à 17:31
- Compte anonymisé
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour,
N'hésitez pas à donner vos avis et à l'améliorer smile
J'hésite pas alors
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 ?
"_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+
#1925 Le 29/03/2018, à 18:54
- G-Tux
Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)
Bonjour,
J'essaie de créer un script pour écouter mes radios favorites.
Mais là, je bloque. Dans la boite zenity qui reste allumée, je voudrais povoir "changer de radio" ou "quitter"
Je ne sais pas si je suis clair, car je suis pas très doué en langage script...
#!/bin/bash
#Prérequis Mplayer et Zenity
if [ "$(pidof mplayer)" ]; then
killall mplayer
fi
log1=Alouette_FM
log1b=http://alouette.ice.infomaniak.ch/alouette-high.mp3
log2=RTL2
log2b=http://streaming.radio.rtl2.fr:80/rtl2-1-44-96
log3=Nostalgie
log3b=http://cdn.nrjaudio.fm/audio1/fr/30601/mp3_128.mp3?origine=playerweb
choixType=$(zenity --list --radiolist --title="Mes Radios" --text="Choisissez dans la liste" --height=240 --print-column="ALL" --column="Choix" --column=" Radios" \
TRUE $log1 \
FALSE $log2 \
FALSE $log3);
case $? in
0)
if [ "$choixType" = $log1 ]
then
zenity --question --title="Mes Radios" --ok-label="Changer de radio" --cancel-label=Éteindre --text=$log1 | mplayer $log1b
elif [ "$choixType" = $log2 ]
then
zenity --question --title="Mes Radios" --ok-label="Changer de radio" --cancel-label=Éteindre --text=$log2 | mplayer $log2b
elif [ "$choixType" = $log3 ]
then
zenity --question --title="Mes Radios" --ok-label="Changer de radio" --cancel-label=Éteindre --text=$log3 | mplayer $log3b
fi
sleep 10;
exit;;
1)
echo "Annulation";
exit;;
-1)
exit;;
esac
Merci de votre indulgence.
Dernière modification par G-Tux (Le 29/03/2018, à 19:21)
MSI CR70 Ubuntu 22.04 + Debian 12 (“Bookwom”) sous MATE
Raspberry Pi avec Raspbian
Hors ligne