Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/12/2018, à 04:10

pc-bluecode

[Script] réinstallation, optimisation et nettoyage 3 en 1

Bonjour à tous,
Suite à de nombreux problèmes "d'erreur interne" sur Ubuntu 16.04 ainsi qu'à plusieurs fausses manipulations et erreurs de débutants rendant mon système inutilisable et me forçant à tout réinstaller, je me suis fais un petit script qui pour l'instant fonctionne bien tant que je ne change pas le nom d'utilisateur. mais j'aimerai bien le rendre un peu plus modulable à ce niveau là. j'ai pensé à une variable du genre $user mais je ne sais pas du tout comment l'intégrer pour récupérer le nom de l'utilisateur renseigné lors de l'installation et sans que ça devienne le bordel.

voici le petit script :

#! /bin/bash

#à exécuter en sudo et UNIQUEMENT SUR UN PC SANS HOTKEY (LAPTOP) ET SANS BT
cd /media/seb/HDD_Ext_4To/Backup/LINUX&&
cp -r . /home/seb/Backup&&
sudo chown -R seb:seb /home/seb/Backup&&
cp /media/seb/HDD_Ext_4To/Backup/LINUX/.bashrc /home/seb/.bashrc&&
sudo chown -R seb:seb /home/seb/.bashrc&&
sudo mkdir -p /log/errors&&
sudo chown -R seb:seb /log&&
cd / &&
sudo chmod -R a-rwx log&& 
sudo chmod -R a-rwx log&&
sudo chmod -R u+rwx log&&
sudo chmod g+rx log&&
sudo chmod -R g+rx /log/errors/&&
sudo apt update > /log/restauration-sh.log 2> /log/errors/restauration-sh.log&&
sudo apt install dselect --yes >> /log/restauration-sh.log 2>> /log/errors/restauration-sh.log&&
sudo dselect update >> /log/restauration-sh.log 2>> /log/errors/restauration-sh.log&&
sudo dpkg --set-selections < /home/seb/Backup/liste-des-paquets >> /log/restauration-sh.log 2>> /log/errors/restauration-sh.log&&
sudo apt-get -u dselect-upgrade --yes >> /log/restauration-sh.log 2>> /log/errors/restauration-sh.log&&
sudo add-apt-repository ppa:unit193/encryption&&
sudo apt update >/log/restauration-sh.log 2> /log/errors/restauration-sh.log&&
sudo apt install --yes veracrypt&&
sudo add-apt-repository 'deb http://liveusb.info/multisystem/depot all main'&&
wget -q http://liveusb.info/multisystem/depot/multisystem.asc -O- | sudo apt-key add -&&
sudo apt update >/log/restauration-sh.log 2> /log/errors/restauration-sh.log&&
sudo apt install --yes multisystem&&
sudo update-rc.d -f pcmciautils remove&&
sudo update-rc.d -f pcmcia remove&&
sudo update-rc.d -f bluetooth remove&&
sudo update-rc.d -f bluez-utils remove&&
sudo update-rc.d -f hotkey-setup remove&&
sudo update-rc.d -f laptop-mode remove&&
sudo update-rc.d -f mdadm remove&&
sudo update-rc.d -f mdadm-raid remove&&
sudo update-rc.d -f lvm remove&&
sudo update-rc.d -f evms remove&&
sudo update-rc.d -f dns-clean remove&&
cd /home/seb/Scripts &&
sudo ./Nettoyer_Ubuntu&&
exit

le script à la fin, pour information :

#!/bin/bash

sudo apt-get autoclean

sudo apt-get clean

sudo apt-get autoremove

sudo apt purge `dpkg -l | grep "^rc" | tr -s ' ' | cut -d ' ' -f 2`

sudo apt clean

sleep 03

merci d'avance pour votre aide.

Dernière modification par pc-bluecode (Le 28/12/2018, à 11:30)

Hors ligne

#2 Le 27/12/2018, à 06:27

kholo

Re : [Script] réinstallation, optimisation et nettoyage 3 en 1

salut,
j'ai pas tout compris...

pourquoi les && en fin de ligne ?

les back quottes sont dépréciées pour $( code )

sudo apt purge `dpkg -l | grep "^rc" | tr -s ' ' | cut -d ' ' -f 2`
sudo apt purge $(dpkg -l | grep "^rc" | tr -s ' ' | cut -d ' ' -f 2)

pour y voir plus clair, j'ai factorisé et ajouté un peu d'air pour avoir :

#!/bin/bash
# ----------------------------------------------
# nomlogiciel="${0##/*}"
# FONCTION=""
# VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
# 
# ----------------------------------------------
# echo "lancement $nomlogiciel..."

my_USER="seb"
my_ORIGINE="/media/$my_USER/HDD_Ext_4To/Backup"
my_HOME="/home/$my_USER"
my_LOG="/log/restauration-sh.log"
my_LOG_ERROR="/log/errors/restauration-sh.log"

#à exécuter en sudo et UNIQUEMENT SUR UN PC SANS HOTKEY (LAPTOP) ET SANS BT
cd $my_ORIGINE/LINUX
cp -r . $my_HOME/Backup
sudo chown -R $my_USER:$my_USER $my_HOME/Backup
cp $my_ORIGINE/LINUX/.bashrc $my_HOME/.bashrc
sudo chown -R $my_USER:$my_USER $my_HOME/.bashrc

sudo mkdir -p /log/errors
sudo chown -R $my_USER:$my_USER /log
cd / 
sudo chmod -R a-rwx log
sudo chmod -R a-rwx log
sudo chmod -R u+rwx log
sudo chmod g+rx log
sudo chmod -R g+rx /log/errors/

sudo apt update > $my_LOG 2> $my_LOG_ERROR
sudo apt install dselect --yes >> $my_LOG 2>> $my_LOG_ERROR
sudo dselect update >> $my_LOG 2>> $my_LOG_ERROR
sudo dpkg --set-selections < $my_HOME/Backup/liste-des-paquets >> $my_LOG 2>> $my_LOG_ERROR
sudo apt-get -u dselect-upgrade --yes >> $my_LOG 2>> $my_LOG_ERROR
sudo add-apt-repository ppa:unit193/encryption

sudo apt update >$my_LOG 2> $my_LOG_ERROR

sudo apt install --yes veracrypt

sudo add-apt-repository 'deb http://liveusb.info/multisystem/depot all main'
wget -q http://liveusb.info/multisystem/depot/multisystem.asc -O- | sudo apt-key add -

sudo apt update >$my_LOG 2> $my_LOG_ERROR

sudo apt install --yes multisystem

sudo update-rc.d -f pcmciautils remove
sudo update-rc.d -f pcmcia remove
sudo update-rc.d -f bluetooth remove
sudo update-rc.d -f bluez-utils remove
sudo update-rc.d -f hotkey-setup remove
sudo update-rc.d -f laptop-mode remove
sudo update-rc.d -f mdadm remove
sudo update-rc.d -f mdadm-raid remove
sudo update-rc.d -f lvm remove
sudo update-rc.d -f evms remove
sudo update-rc.d -f dns-clean remove

cd $my_HOME/Scripts 
sudo ./Nettoyer_Ubuntu

exit 0

et tu verras qu'il reste des trucs bizarres et des doublons de lignes...

sudo chmod -R a-rwx log
sudo chmod -R a-rwx log
sudo chmod -R u+rwx log
sudo chmod g+rx log
sudo chmod -R g+rx /log/errors/

un peu lourdingue ça, non ?

sudo apt update >$my_LOG 2> $my_LOG_ERROR

la première fois ok mais la seconde et troisième fois vont virer les logs précédemment ajoutés

quant aux tests de sudoers, tu peux ajouter un if au début wink

... et pourquoi le sleep 3 en dernière ligne de ton second script ?

NB : je ne le test pas, donc relis bien si tu veux utiliser mon code !!!

Hors ligne

#3 Le 27/12/2018, à 07:12

pc-bluecode

Re : [Script] réinstallation, optimisation et nettoyage 3 en 1

kholo a écrit :

salut,
j'ai pas tout compris...
pourquoi les && en fin de ligne ?

Tout simplement parce que on m'a appris comme ça mais si cela marche sans autant ne plus les mettre

kholo a écrit :
...
my_USER="seb"

il y a pas un moyen de récupérer automatiquement le contenu de my_USER ? Sans devoir modifier à la main avant de lancer le script. je crois que je vais virer toute la partie qui contient my_ORIGINE et laisser sur le home séparé ce que j'ai besoin. Sinon je vais creuser pour trouver une solution s'il y a moyen de tester l'emplacement physique du home (partition/disque séparé de / ou pas)


kholo a écrit :
sudo apt update >$my_LOG 2> $my_LOG_ERROR

la première fois ok mais la seconde et troisième fois vont virer les logs précédemment ajoutés

c'est corrigé, un oubli après un copier/coller ainsi que les doublons, merci wink

kholo a écrit :

... et pourquoi le sleep 3 en dernière ligne de ton second script ?

Il n'est pas de moi, je l'ai pioché sur internet je sais plus où, j'y ai pas touché.
au vu de ta question je comprends que je peux tout simplement le virer ou remplacer le sleep 3 par exit 0 ?

Hors ligne

#4 Le 27/12/2018, à 07:46

kholo

Re : [Script] réinstallation, optimisation et nettoyage 3 en 1

en fait, tout dépend de quand et comment tu lances ton script...
les && sont pour lancer une commande si la première est bien terminée, sinon non.
les sauts de lignes cassent le fonctionnement sauf si tu fais

du code && \
une autre ligne

qui équivaut à

du code && une autre ligne

par exemple

sudo apt update -y && sudo apt upgrade

tu trouveras tes variables globales avec

env

$USER est l'utilisateur courant
$HOME est son home
...

pour ce qui est de toucher au script, c'est clair qu'il est préférable de ne pas mélanger le code et les données...
donc tu peux avoir un fichier à part à adapter
prenons un fichier texte :
monfichier.txt

une ligne
une autre ligne

pour lire ce fichier :

IFS=$'\n' 
for uneligne in $(< "unfichier.txt")
do
    echo $uneligne
done

ici cela fonctionne car le nom du fichier ne contient pas de saut de ligne (rare, mais ça existe)
et attention aux changement de IFS wink

ou injecter les variables au lancement du script
je ne te met pas d'exemple mais regarde du côté de getopt voire getopts et les variables de bash

nomlogiciel="${0##/*}
arguments=${@}
lepremier=${1}

...

voila, tu as de quoi faire des recherches
et, j'ai un fil avec des exemples et des liens ici :
un peu de lecture

Hors ligne

#5 Le 28/12/2018, à 09:35

pc-bluecode

Re : [Script] réinstallation, optimisation et nettoyage 3 en 1

voilà j'ai un peu retravaillé le code, pour que ce soit au plus simple possible, j'aimerai l'adapter au plus grand nombre, donc ppa personnalisable et possibilité d'accepter ou refuser les optimisations ainsi que le nettoyage en fin de script je pensais à des condition avec des variables read pour le lancement ou pas de ces parties, ou tout autre idée
Ce qui ferait que je devrais intégrer la partie nettoyage directement dans le script sa risque pas de devenir un peu lourd ?

#!/bin/bash
# ----------------------------------------------
 nomlogiciel="réinstallation"
# FONCTION=""
# VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
# 1.0 Version de base
# 1.1 Version optimisée, plus claire by kholo
# 1.2 Version retravaillée beaucoup plus générique
# ----------------------------------------------
#à exécuter UNIQUEMENT SUR UN PC SANS HOTKEY (LAPTOP) ET SANS BT

 echo "lancement de $nomlogiciel"

if ["$ (id -u)"! = "0"]; then
	echo "Désolé, tu n'es pas root."
	exit 1
fi


my_LOG="/log/restauration-sh.log"
my_LOG_ERROR="/log/errors/restauration-sh.log"


sudo mkdir -p /log/errors
sudo chown -R $USER:$USER /log 
sudo chmod -R 700 /log


#ajout ppa (à modifier si nécessaire)
sudo add-apt-repository 'deb http://liveusb.info/multisystem/depot all main'
wget -q http://liveusb.info/multisystem/depot/multisystem.asc -O- | sudo apt-key add -
sudo add-apt-repository ppa:unit193/encryption


sudo apt update > $my_LOG 2> $my_LOG_ERROR
sudo apt install dselect --yes >> $my_LOG 2>> $my_LOG_ERROR
sudo dselect update >> $my_LOG 2>> $my_LOG_ERROR
sudo apt update >>$my_LOG 2>> $my_LOG_ERROR
sudo dpkg --set-selections < $HOME/.liste-des-paquets >> $my_LOG 2>> $my_LOG_ERROR
sudo apt-get -u dselect-upgrade --yes >> $my_LOG 2>> $my_LOG_ERROR


sudo update-rc.d -f pcmciautils remove
sudo update-rc.d -f pcmcia remove
sudo update-rc.d -f bluetooth remove
sudo update-rc.d -f bluez-utils remove
sudo update-rc.d -f hotkey-setup remove
sudo update-rc.d -f laptop-mode remove
sudo update-rc.d -f mdadm remove
sudo update-rc.d -f mdadm-raid remove
sudo update-rc.d -f lvm remove
sudo update-rc.d -f evms remove
sudo update-rc.d -f dns-clean remove

cd $HOME/Scripts 
sudo ./Nettoyer_Ubuntu

exit 0

Hors ligne

#6 Le 28/12/2018, à 11:00

kholo

Re : [Script] réinstallation, optimisation et nettoyage 3 en 1

bon, tout de suite plus lisible.
alors,...
comme tu es tout sudo pas la peine de les mettre wink
tant qu'à faire, ton script de nettoyage peut être intégré dans le script qui deviendrait plus facile à diffuser...
un script est un script, pas la peine de t'embêter avec ppa, appimage et autres encapsulages...

tu peux factoriser ça avec une fonction...

sudo update-rc.d -f pcmciautils remove
sudo update-rc.d -f pcmcia remove
sudo update-rc.d -f bluetooth remove
sudo update-rc.d -f bluez-utils remove
sudo update-rc.d -f hotkey-setup remove
sudo update-rc.d -f laptop-mode remove
sudo update-rc.d -f mdadm remove
sudo update-rc.d -f mdadm-raid remove
sudo update-rc.d -f lvm remove
sudo update-rc.d -f evms remove
sudo update-rc.d -f dns-clean remove

dois-je te dire comment ? cool

c'est tout ce que je vois à la première lecture...

Hors ligne

#7 Le 28/12/2018, à 11:13

pc-bluecode

Re : [Script] réinstallation, optimisation et nettoyage 3 en 1

kholo a écrit :

bon, tout de suite plus lisible.
alors,...
comme tu es tout sudo pas la peine de les mettre wink
un script est un script, pas la peine de t'embêter avec ppa, appimage et autres encapsulages...

Pour les sudo j'y avais pas pensé, c'est corrigé.
Le truc c'est que dans liste-des-paquets s'il y a des paquets qui sont pas dans les dépôts officiels comment c'est géré ça ? Comme dans mon cas.

kholo a écrit :

tu peux factoriser ça avec une fonction...

sudo update-rc.d -f pcmciautils remove
sudo update-rc.d -f pcmcia remove
sudo update-rc.d -f bluetooth remove
sudo update-rc.d -f bluez-utils remove
sudo update-rc.d -f hotkey-setup remove
sudo update-rc.d -f laptop-mode remove
sudo update-rc.d -f mdadm remove
sudo update-rc.d -f mdadm-raid remove
sudo update-rc.d -f lvm remove
sudo update-rc.d -f evms remove
sudo update-rc.d -f dns-clean remove

dois-je te dire comment ? cool

Je vois pas comment faire... à vrai dire c'est mon premier vrai script aussi élaboré wink

Dernière modification par pc-bluecode (Le 28/12/2018, à 11:14)

Hors ligne

#8 Le 28/12/2018, à 11:44

kholo

Re : [Script] réinstallation, optimisation et nettoyage 3 en 1

euh... comme ça par exemple :

#!/bin/bash

mafonction(){
    update-rc.d -f $1 remove
}

# là tu peux lire un fichier texte !

uneliste="pcmciautils
pcmcia
bluetooth
bluez-utils
hotkey-setup
laptop-mode
mdadm
mdadm-raid
lvm
evms
dns-clean"

IFS=$'\n' uneliste=( $uneliste )
# ça peut se faire aussi avec un read

n=0
for untruc in ${uneliste[@]}
do
    echo $n $untruc
    # mafonction $untruc # démilitarisé, retirer le commentaire pour activer
    n=$(($n+1))
done

# ou comme ça !!!

for untruc in ${!uneliste[@]}
do
    echo  $untruc ${uneliste[untruc]}
    # mafonction $untruc # démilitarisé, ...
done

Hors ligne

#9 Le 28/12/2018, à 11:56

pc-bluecode

Re : [Script] réinstallation, optimisation et nettoyage 3 en 1

voilà après les modifications suite à ton aide

#!/bin/bash
# ----------------------------------------------
 nomlogiciel="réinstallation"
# FONCTION=""
# VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
# 1.0 Version de base
# 1.1 Version optimisée, plus claire by kholo
# 1.2 Version retravaillée beaucoup plus générique
# 1.3 Intégration du nettoyage directement dans le script
# ----------------------------------------------
# REMARQUES
# à exécuter uniquement sur un pc sans hotkey et sans bluethoot
#  ----------------------------------------------
# REMERCIEMENTS
# à kholo pour son aide précieuse
# ----------------------------------------------

echo "lancement de $nomlogiciel"

if ["$ (id -u)"! = "0"]; then
	echo "Désolé, tu n'es pas root."
	exit 1
fi


my_LOG="/log/restauration.log"
my_LOG_ERROR="/log/errors/restauration.log"


mkdir -p /log/errors
chown -R $USER:$USER /log 
chmod -R 700 /log


#ajout ppa (à modifier si nécessaire)
add-apt-repository 'deb http://liveusb.info/multisystem/depot all main'
wget -q http://liveusb.info/multisystem/depot/multisystem.asc -O- | apt-key add -
add-apt-repository ppa:unit193/encryption


apt update > $my_LOG 2> $my_LOG_ERROR
apt install dselect --yes >> $my_LOG 2>> $my_LOG_ERROR
dselect update >> $my_LOG 2>> $my_LOG_ERROR
apt update >>$my_LOG 2>> $my_LOG_ERROR
dpkg --set-selections < $HOME/.liste-des-paquets >> $my_LOG 2>> $my_LOG_ERROR
apt-get -u dselect-upgrade --yes >> $my_LOG 2>> $my_LOG_ERROR


mafonction(){
    update-rc.d -f $1 remove
}

uneliste="pcmciautils
pcmcia
bluetooth
bluez-utils
hotkey-setup
laptop-mode
mdadm
mdadm-raid
lvm
evms
dns-clean"

IFS=$'\n' uneliste=( $uneliste )


apt-get autoclean
apt-get clean
apt-get autoremove
apt purge $(dpkg -l | grep "^rc" | tr -s ' ' | cut -d ' ' -f 2)
apt clean

exit 0

j'ai rien trouvé concernant les ppa pour les paquets hors dépôts officiels venant de : liste-des-paquets... Une idée ou je laisse tel quel et chacun modifie selon ses besoins ou je retire tout simplement ?

Hors ligne

#10 Le 28/12/2018, à 12:25

kholo

Re : [Script] réinstallation, optimisation et nettoyage 3 en 1

bon, tu as mis la liste mais pas le for do done donc, pour le moment, elle ne sert à rien wink

pour aller plus loin je t'invite à de la lecture :
on est quelques uns à s'être tracassé sur cette post install...
outre la mienne, tu trouveras celle de Nam, gamma draconis, seb sauvage,... pour ne citer que nous
... et d'une façon générale, tous les fils dont le titre contient un truc du genre "les X choses à faire après une install..." et tout équivalent anglophone.

NB : je ne suis pas fan des ppa, et autres conteneurs et n'en conseillerais l'usage que dans un cas de besoin absolu.
NB2 : le script de gamma draconis répondra à ta question quant à ces ppa, appimages et autres joyeusetés !

Hors ligne