1 votes

Comment pourrais-je faire un bash script pour exécuter apt-get ?

J'essaie d'automatiser certaines configurations que j'ai avec bash script, je n'ai jamais fait cela auparavant donc j'ai essayé avec quelque chose de facile comme un Hello World! et tout fonctionne très bien, mais ensuite j'ai essayé quelque chose comme ça :

#!/bin/bash
sudo su
apt-get purge postfix

et cela ne fait rien, je vérifie et postfix est toujours installé, et à tout moment il demande une de mes entrées, je viens d'essayer avec apt-get mais je ferai des choses comme ssh-keygen ou même écrire des fichiers je suppose avec cat ou autre, comment faire pour que le script fonctionne et aussi pour voir ce qui se passe ?

7voto

dset0x Points 2085

sudo su fonctionne su pour vous, qui à son tour vous laisse dans un Shell en tant que root, attendant votre entrée.

Ce que vous voulez faire, c'est sudo apt-get purge postfix . man sudo pour voir pourquoi.

Vous trouverez de nombreux exemples de bash script autour de vous pour une référence supplémentaire.

4voto

Patrick Points 141

Il est préférable que cette tâche soit automatisée par le compte root/admin et ne soit pas laissée aux mains d'un utilisateur standard.

La meilleure pratique concernant ce que vous voulez accomplir est de devenir racine sudo su - et ensuite travailler dans le répertoire de l'utilisateur /root. Quelque chose comme ça est généralement mieux gardé dans ~/bin ou ~/scripts donc, s'il n'existe pas, vous devrez peut-être le créer et vérifier que le nouveau domicile fait partie de votre système d'information. PATH . C'est toujours une bonne idée de garder un répertoire scripts d'une certaine sorte pour abriter les petits scripts que vous utilisez pour gérer votre ou vos systèmes avec le temps, vous finirez par en avoir pas mal et chaque administrateur a sa "boîte à outils" qu'il garde pour ces choses. L'astuce consiste à essayer d'écrire du code qui soit réutilisable et qui vous facilite ainsi la vie.

Si vous avez l'intention d'utiliser un certain nombre de ces fichiers, je créerais un répertoire spécial pour eux, par exemple ~/scripts/sysupdates et essayez de faire en sorte que chaque fichier ne fasse qu'une seule chose. Ceci reflète la fonction d'autres systèmes *nix comme init.d et rendra la maintenance du système plus facile et intuitive. Cela a aussi pour but de limiter nos entrées à d'autres endroits, comme vous le verrez bientôt.

si vous créez les fichiers pour ce que vous voulez mettre à jour comme mentionné ci-dessus (ex. postfix, qmail, update) alors vous pouvez les parcourir en boucle avec un script dans ~/script qui peut être quelque chose comme :

#/usr/bin/bash
#
# Script: updater.sh
# Author: My Name  
# Date: yyyymmdd - ee   (ee = times edited)
# 
# Purpose: run update scripts from ~/scripts/sysupdates
# 
# Notes:
# 

for SCRIPT in `ls ~/scripts/sysupdates`; do ${SCRIPT}; done

Faites-vous une faveur et prenez l'habitude de créer un en-tête approprié pour chaque fichier que vous créez. Cela ne prend qu'une minute et vous épargnera des maux de tête par la suite. N'oubliez pas que vous ne vous souviendrez peut-être plus pourquoi vous l'avez créé ou ce qu'il faisait, ou que ce n'est peut-être pas vous qui devrez le maintenir un jour.

La dernière partie de cette opération consiste à éditer la crontab de la racine. Cron est un programme qui exécute un script donné à un intervalle spécifié. Donc si nous ajoutons notre updater.sh script à la crontab tout ce que nous avons à faire est d'ajouter des fichiers à ~/scripts/sysupdates et ils seront exécutés automatiquement.

Vous accédez à la crontab avec crontab -e qui éditera la crontab avec l'éditeur système défini (généralement vim sous linux). Il existe un générateur de crontab pour vous aider : http://www.thepcmanwebsite.com/crontab_generator.shtml pour fabriquer le vôtre. Ajoutez la ligne :

5 0 1 * * /root/scripts/updater.sh

Vous devriez être prêt à partir. Amusez-vous bien avec ces outils car ils peuvent rendre la vie d'un administrateur système beaucoup plus facile.

Un mot d'avertissement ; je n'ajouterais pas apt-get -y dist-upgrade à vos scripts, exécutez celui-là quand vous êtes prêt à vous en occuper, s'il tourne mal.

1voto

user85922 Points 1

apt-get purge ne fonctionne que sous sudo ou root, pour exécuter sudo à partir d'un script vous devez activer sudo sans mot de passe pour l'utilisateur sous lequel vous exécutez le script sinon il demandera un mot de passe et attendra.

Exécuter visudo et ajoutez une ligne en bas de page indiquant

yourusername ALL=NOPASSWD: ALL

De plus, apt-get donne une invite, pour supprimer le paquet sans invite utilisez l'option -y

sudo apt-get purge package -y

Le résultat final serait quelque chose comme :

#!/bin/bash
sudo apt-get purge postfix -y

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X