#1 Le 27/12/2018, à 03: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, à 10:30)
Hors ligne
#2 Le 27/12/2018, à 05: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
... 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, à 06:12
- pc-bluecode
Re : [Script] réinstallation, optimisation et nettoyage 3 en 1
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
... 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)
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
... 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, à 06: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
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, à 08: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, à 10: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
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 ?
c'est tout ce que je vois à la première lecture...
Hors ligne
#7 Le 28/12/2018, à 10:13
- pc-bluecode
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
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.
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 ?
Je vois pas comment faire... à vrai dire c'est mon premier vrai script aussi élaboré
Dernière modification par pc-bluecode (Le 28/12/2018, à 10:14)
Hors ligne
#8 Le 28/12/2018, à 10: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, à 10: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, à 11: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
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