J'ai créé un script bash pour mettre à jour automatiquement mon serveur Ubuntu. Voici le script:
#!/bin/bash
apt-get update
apt-get upgrade
echo "Update am $(date "+%d. %m. %y|%H:%M:%S) >> /var/log/update.log
exit 0
Le fichier journal est toujours vide. crontab:
0 3 * * * /drives/files/scripts/update.sh
Je sais, que je peux définir, que le serveur Ubuntu soit mis à jour automatiquement dans les paramètres, mais ceci est destiné à vous familiariser avec cron et un peu de script.
Merci
Je suppose que vous utilisez crontab avec un utilisateur normal, ce qui signifie qu'il ne peut pas mettre à jour/mettre à niveau un système sans fournir de Sudo.
De plus, apt-get update
et apt-get upgrade
demanderont à l'utilisateur une confirmation, vous devrez donc la transmettre avant.
yes | apt-get update
yes | apt-get upgrade
Donc, pour le résoudre, vous devez exécuter vos commandes avec Sudo, mais cela vous empêchera de fournir le mot de passe à Sudo.
De plus
echo "Update am "$(date "+%Y-%m-%d %H:%M:%S") >> /var/log/update.log
écrit dans/var/log/... ce qui signifie qu’il faut avoir l’autorisation pour faire ce qui n’est pas fondé pour un utilisateur normal.
Afin de résoudre ce problème, vous devez exécuter votre script dans le répertoire racine.
Sudo crontab -e
ouvrira le fichier racine cron dans votre éditeur par défaut.
Ajoutez l'entrée de votre script
0 3 * * * /drives/files/scripts/update.sh
Maintenant, enregistrez et quittez.
PS: juste au cas où, assurez-vous de donner le droit d'exécution pour votre script. Pour ce faire, exécutez la commande:
chmod +x /path-to-script
Pourquoi ça ne marche pas?
Pour faire apt-get update
et apt-get upgrade
vous devez devenir un utilisateur Sudo. Je veux dire que votre script doit être exécuté avec les privilèges Sudo.
D'autres arrêts?
Oui, vous ne donnez pas -y
qui laisse la commande de mise à jour télécharger automatiquement après la mise à jour.
Est-ce une chose majeure?
Oui, si vous ne passez pas -y avec la commande, votre cron s'arrêtera et recherchera l'argument '-y' et il n'exécutera pas jusqu'à ce qu'il obtienne le -y.
Comment exécuter le script cron en tant qu'utilisateur root?
Sudo crontab -e
Il vous demandera de choisir l'éditeur et choisissez nano, puis ajoutez-y votre ligne. Mais le script complet devrait être ceci
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
J'espère que ça t'as aidé.