This commit is contained in:
kyodev 2017-08-07 21:58:22 +02:00
parent 350571ff7b
commit f850f10a5f
1 changed files with 80 additions and 75 deletions

View File

@ -1,6 +1,6 @@
#!/bin/bash
version=0.9.5
version=0.10.0b1
date="07/08/2017"
projet="simpledeb"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues"
@ -115,51 +115,36 @@ f__wget_test(){
f__error "Erreur wget" " réessayer et si persistance, contacter $projet $contact" " en indiquant les messages précédents."
}
# install du script dans le système
fscript_install(){
f__root || f__error "vous devez être ROOT pour installer ce script dans le système"
# install /opt
mkdir -p /opt/bin/
cp -d "$(basename $0)" "/opt/bin/$script"
chmod a+rwx "/opt/bin/$script"
chown "$user_": "/opt/bin/$script"
ln -s "/opt/bin/$script" "/usr/bin/$script" &>/dev/null
# cron/anacron install
fscript_cronAnacron "install"
# création fichier log
touch "$fileLogs"
chmod a+rwx "$fileLogs"
chown "$user_": "$fileLogs"
[ -f "$script"_changelog.md ] || rm "$(basename $0)" &>/dev/null ## on efface pas si changelog (dev)
f__info "$GREEN$script installé dans le système." "maintenant, appel du script par:$GREEN $script$BLUE (sans ./)"
f__log "$script $version installé dans le système"
}
# suppression du script dans le système
fscript_remove(){
f__root || f__error "vous devez être ROOT pour supprimer ce script dans le système"
# suppression de /opt
rm /opt/bin/"$script" &>/dev/null
unlink /usr/bin/"$script" &>/dev/null
unlink /usr/local/bin/"$script" &>/dev/null # ancienne localisation
# cron/anacron remove
fscript_cronAnacron remove
f__info "$GREEN$script supprimé du système."
f__log "$script $version supprimé du système"
}
# version script en ligne, assigne $versionScript, $script_aJour=ok|ko
fscript_get_version(){
versionScript="$(wget -q --tries=2 --timeout=15 -O - "$urlScript" | grep '^version=' | cut -d '=' -f 2)"
if [ "$versionScript" ]; then
if [ "$version" != "$versionScript" ]; then
f__info "version script en ligne: $versionScript, mise à jour possible"
script_aJour="ko"
else
f__info "version script en ligne: $versionScript"
script_aJour="ok"
fi
else f__info "version script en ligne non accessible"; fi
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire
fscript_cronAnacron(){
local dirAnacron="/home/$user_/.config/anacron"
local dirSpool="$dirAnacron/spool"
local fileAnacron="$dirAnacron/$script.anacrontab"
case "$1" in
install )
mkdir -p "$dirAnacron"
# table anacron
echo "7 01 $script nice /opt/bin/$script --upgrade &>/dev/null" > "$fileAnacron"
## test: anacron journalier:
echo "1 01 ""$script""test nice /opt/bin/$script --upgrade &>/dev/null" > "$fileAnacron"
chown -R --no-preserve-root "$user_": "$dirAnacron"
chmod -R --no-preserve-root ug+xw "$dirAnacron"
# création spool anacron utilisateur
mkdir -p "$dirSpool"
chown -R --no-preserve-root "$user_": "$dirSpool"
chmod -R --no-preserve-root ug+xw "$dirSpool"
# cron tab pour activation horaire anacron
grep -q ".*$script.anacrontab" /etc/crontab || \
echo "@hourly $user_ /usr/sbin/anacron -t $fileAnacron -S $dirSpool" >> /etc/crontab
;;
remove )
rm "$dirSpool/$script"* &>/dev/null
sed -i "/$script.anacrontab/d" /etc/crontab
rm "$fileAnacron" &>/dev/null
rm "$dirSpool/$script" &>/dev/null
rmdir "$dirSpool" "$dirAnacron" &>/dev/null
;;
esac
}
# mise à jour script si dispo
@ -179,35 +164,55 @@ fscript_dl(){
exit 0
}
# inscription dans tache upgrade en anacron hebdomadaire, via cron horaire
fscript_cronAnacron(){
local dirAnacron="/home/$user_/.config/anacron"
local dirSpool="$dirAnacron/spool"
local fileAnacron="$dirAnacron/$script.anacrontab"
case "$1" in
install )
mkdir -p "$dirAnacron"
# table anacron
echo "7 01 $script nice /opt/bin/$script --upgrade &>/dev/null" > "$fileAnacron"
## test: anacron journalier: echo "1 01 ""$script""test nice /opt/bin/$script --upgrade &>/dev/null" > "$fileAnacron"
chown -R --no-preserve-root "$user_": "$dirAnacron"
chmod -R --no-preserve-root ug+xw "$dirAnacron"
# création spool anacron utilisateur
mkdir -p "$dirSpool"
chown -R --no-preserve-root "$user_": "$dirSpool"
chmod -R --no-preserve-root ug+xw "$dirSpool"
# cron tab pour activation horaire anacron
grep -q ".*$script.anacrontab" /etc/crontab || \
echo "@hourly $user_ /usr/sbin/anacron -t $fileAnacron -S $dirSpool" >> /etc/crontab
;;
remove )
rm "$dirSpool/$script"* &>/dev/null
sed -i "/$script.anacrontab/d" /etc/crontab
rm "$fileAnacron" &>/dev/null
rm "$dirSpool/$script" &>/dev/null
rmdir "$dirSpool" "$dirAnacron" &>/dev/null
;;
esac
# version script en ligne, assigne $versionScript, $script_aJour=ok|ko
fscript_get_version(){
versionScript="$(wget -q --tries=2 --timeout=15 -O - "$urlScript" | grep '^version=' | cut -d '=' -f 2)"
if [ "$versionScript" ]; then
if [ "$version" != "$versionScript" ]; then
f__info "version script en ligne: $versionScript, mise à jour possible"
script_aJour="ko"
else
f__info "version script en ligne: $versionScript"
script_aJour="ok"
fi
else f__info "version script en ligne non accessible"; fi
}
# install du script dans le système
fscript_install(){
if dirname "$0" | grep -q 'bin' ; then
f__info "$script $version est déjà installé"
return 1
fi
[ $EUID -eq 0 ] || f__error "vous devez être ROOT pour installer ce script dans le système"
# install /opt
mkdir -p /opt/bin/
cp -d "$(basename $0)" "/opt/bin/$script"
chmod a+rwx "/opt/bin/$script"
chown "$user_": "/opt/bin/$script"
ln -s "/opt/bin/$script" "/usr/bin/$script" &>/dev/null
# cron/anacron install
fscript_cronAnacron "install"
# création fichier log
touch "$fileLogs"
chmod a+rwx "$fileLogs"
chown "$user_": "$fileLogs"
[ -f "$script"_changelog.md ] || rm "$(basename $0)" &>/dev/null ## on efface pas si changelog (dev)
f__info "$GREEN$script $version installé dans le système." "maintenant, appel du script par:$GREEN $script$BLUE (sans ./)"
f__log "$script $version installé dans le système"
}
# suppression du script dans le système
fscript_remove(){
f__root || f__error "vous devez être ROOT pour supprimer ce script dans le système"
# suppression de /opt
rm /opt/bin/"$script" &>/dev/null
unlink /usr/bin/"$script" &>/dev/null
unlink /usr/local/bin/"$script" &>/dev/null # ancienne localisation
# cron/anacron remove
fscript_cronAnacron remove
f__info "$GREEN$script supprimé du système."
f__log "$script $version supprimé du système"
}
# assigne $context_appli, context_break