1 votes

Peut-on exécuter une partie seulement d'un script en tant que sudo au démarrage ?

J'ai un Lenovo Yoga 7i, il y a un problème connu avec sa carte audio sur les noyaux actuels où il ne sort pas de son par les haut-parleurs.

Il y a cependant une solution pirate décrite ici où, après avoir fait la configuration, vous exécutez ce script et l'audio fonctionne.

#!/bin/bash
sudo rtcwake -m mem -s 1
while true
do
  echo -n -e '\x00' | padsp tee /dev/audio
  sleep 5
done

Le problème avec ce script est qu'afin d'exécuter rtcwake vous semblez devoir l'exécuter en tant que sudo ce qui signifie que vous devez saisir le mot de passe, ce qui le rend inutile en tant que script de démarrage. Mais en exécutant le script en tant que root dès le début signifie que la boucle while produit l'erreur tee: /dev/audio: Connection refused encore et encore.

Comment puis-je exécuter ce script, qui n'en utilise que des parties comme sudo, au démarrage depuis n'importe quel utilisateur ?

1voto

vanadium Points 56513

Ce qui peut fonctionner est de diviser le script : exécuter le rtcwake -m mem -s 1 pendant le démarrage en tant que root. De nos jours, une crontab peut être le moyen le plus pratique de le faire (à moins que vous n'ayez envie d'écrire un service systemd) :

sudo crontab -e

Pour ouvrir et éditer le fichier crontab de la racine, et ajouter :

@reboot rtcwake -m mem -s 1

Vous pourriez ensuite exécuter la partie suivante dans un autre script que vous lancez automatiquement à la connexion de l'utilisateur.

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