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 01/02/2008, à 09:35

Angelfire

Installateur usplash automatique.

Bonjour à  tous,

Je veux crée dans le cadre d'un projet un installateur usplash automatique.

Je voulais savoir pour exécuter une commande sh (celle pour installer le thème), dans un programme C, c'est bien la commande system() ?

Et pour les arguments, c'est le argc et le argv dans le main, mais que prends la fonction system comme argument(s) ?

Ensuite pour le code pour installer le thème, seuls ces codes :

*
      On commence par indiquer à  update-alternatives que l'on a installé un nouvel usplash

sudo update-alternatives --install /usr/lib/usplash/usplash-artwork.so usplash-artwork.so /usr/lib/usplash/Nom de votre theme.so 10

    *
      On choisit l'usplash que l'on veut utiliser (si il y en a plusieurs).

sudo update-alternatives --config usplash-artwork.so

    *
      Dernière étape (Mise à  jour de l'initramfs)

sudo update-initramfs -u

sont suffisants ? Et quelle est la donnée que j'ai besoin d'utiliser pour l'installer (uniquement ce que j'ai mis en blod ?)?

Et faut-il que je les exécute 1 à  1 avec une fonction system() différente ?

Merci pour l'aide smile

Dernière modification par Angelfire (Le 01/02/2008, à 09:36)

Hors ligne

#2 Le 01/02/2008, à 10:49

arnaud741

Re : Installateur usplash automatique.

Bonjour à  tous,

Salut à  toi !

Je voulais savoir pour exécuter une commande sh (celle pour installer le thème), dans un programme C, c'est bien la commande system() ?

Oui !

Ensuite, les 3 commandes que tu proposes sont correctes. Mais, pour automatiser encore plus ton programme, il faudrait peut-être une autre commande, placée avant les 3 autres :

sudo cp "/home/utoto/chemin_vers_theme/theme.so" /usr/lib/usplash/

Ha oui, n'oublie pas les guillemets autour de chaque chemin contenant des fichiers utilisateurs... Comme ça, si le chemin contient des caractères spéciaux (espaces par exemple), ta commande fonctionnera encore wink ! En principe, c'est inutile pour les chemins vers les fichiers système, ils ne contiennent que des caractères "normaux"...

Et pour les arguments, c'est le argc et le argv dans le main, mais que prends la fonction system comme argument(s) ?

Un seul : la commande à  exécuter, suivie de ses arguments !

Supposons que les 4 commandes à  exécuter soient celles-ci :

sudo cp "/home/utoto/chemin_vers_theme/mon_theme.so" /usr/lib/usplash/

sudo update-alternatives --install /usr/lib/usplash/usplash-artwork.so usplash-artwork.so "/usr/lib/usplash/mon_theme.so" 10

sudo update-alternatives --config usplash-artwork.so

sudo update-initramfs -u

Alors, le code correspondant en langage C est (non testé, donc pas à  l'abri de bêtes erreurs de syntaxes, mais c'est le principe qui est important) :

system ( "sudo cp \"/home/utoto/chemin_vers_theme/mon_theme.so\" /usr/lib/usplash/" ) ;

system ( "sudo update-alternatives --install /usr/lib/usplash/usplash-artwork.so usplash-artwork.so \"/usr/lib/usplash/mon_theme.so\" 10" ) ;

system ( "sudo update-alternatives --config usplash-artwork.so" ) ;

system ( "sudo update-initramfs -u" ) ;

Comme tu remarques, n'oublie pas de protéger les guillemets qui sont à  l'intérieur de l'argument passé à  la fonction system() !

Ensuite, il te restera à  régler quelques détails : en supposant que la variable argv[1] contienne le chemin vers le thème (c'est-à -dire "/home/utoto/chemin_vers_theme/mon_theme.so") , il te faudra inclure le contenu de cette variable dans la 1ère commande ! La fonction C strcat() devrait être utile ici...

Et faut-il que je les exécute 1 à  1 avec une fonction system() différente ?

Oui. Même si ce n'est pas indispensable, ce sera nettement plus clair !

Par contre, 2 questions me viennent à  l'esprit :
1. Pourquoi ne pas directement faire un script shell plutà´t qu'un programme en C ?
2. Comment penses-tu gérer le problème de sudo ? En effet, tu devras faire rentrer le mot de passe à  l'utilisateur... J'espère que tu n'avais pas imaginé un programme sans aucune interaction avec l'utilisateur ?

Hors ligne

#3 Le 01/02/2008, à 10:57

arnaud741

Re : Installateur usplash automatique.

Ha oui, j'oubliais : concernant sudo, cette petite astuce devrait t'éviter de demander le mot de passe trop souvent à  l'utilisateur :

echo $mon_mot_de_passe | sudo -S ma_commande

Mais niveau sécurité, c'est pas terrible : par exemple, il est possible, avec la commande ps (listage des processus présents sur le système) d'afficher en clair le mot de passe !! Par contre, si la sécurité n'est pas ta priorité...

Hors ligne

#4 Le 01/02/2008, à 13:47

Angelfire

Re : Installateur usplash automatique.

arnaud741 a écrit :

Ha oui, j'oubliais : concernant sudo, cette petite astuce devrait t'éviter de demander le mot de passe trop souvent à  l'utilisateur :

echo $mon_mot_de_passe | sudo -S ma_commande

Mais niveau sécurité, c'est pas terrible : par exemple, il est possible, avec la commande ps (listage des processus présents sur le système) d'afficher en clair le mot de passe !! Par contre, si la sécurité n'est pas ta priorité...

Merci à  toi cher ami.

Effectivement je n'avais pas pensé au mot de passe. Sinon je fais ce script en C, car on (on car on est plusieurs, on réalise un panneau de config Linux en fait) a prévu de le faire comme ça, avec la fonction qui se déclenche quand on appuie sur le bouton.

Hors ligne

#5 Le 06/02/2008, à 17:55

gKsam

Re : Installateur usplash automatique.

deux petites bricoles au passage.

pour le coups du sudo je fait :

sudo su

et hop me voilà  en root avec un seul mot de passe rentré

pour l'installation de l'usplash je remplace la ligne :

update-alternatives --config usplash-artwork.so

par

update-alternatives --set usplash-artwork.so /usr/lib/usplash/<nom_mon_theme>

comme ça cela ne pose pas de question.

je suis en plein dedans aussi. Je fini se poste et je vois si cela fonctionne avec mon petit cd autonome personnalisé...

autre chose qu'est-ce-que je me plante à  ecrire uslpash smile

Hors ligne

#6 Le 06/02/2008, à 18:58

vinc-mai

Re : Installateur usplash automatique.

Si tu veux ne pas utiliser su,

sudo -s

permet aussi de ne rentrer qu'une fois le mot de passe.


ZiK un lecteur audio et son blog.

Hors ligne

#7 Le 06/02/2008, à 20:16

gKsam

Re : Installateur usplash automatique.

après test avec un cd autonome (cd live)

Pour l'instant cela fonctionne à  moitié.

En fait au démarrage du cd je n'ai pas mon usplash qui fonctionne. Par contre à  l'arrêt du cd et bien cela fonctionne.

j'en déduit donc que cela va fonctionner smile

Hors ligne

#8 Le 09/02/2008, à 10:15

gKsam

Re : Installateur usplash automatique.

C'est bizzard quand même hmm

<mon_theme>.so fonctionne bien sur un système installé sur un disque dur. Mais ne fonctionne pas sur un système installé sur un cd autonome...

Comme je disais dans le message précédent. Au démarrage du cd autonome cela ne fonctionne pas. Mais à  l'arrêt du cd autonome cela fonctionne.

Pour l'instant je laisse comme ça, j'arrête de faire mumuse avec ça. Mais comme chaque détail à  son importance, il faudra bien qu'un jour cela fonctionne.

Hors ligne