Shell scripting

Bijour les zamis

Etant un jeune dans la famille Linux, j’ai un peu de mal à faire un truc tout con j’en suis sur (humilité bien sentie).
Pour monter ma carte WiFi et configurer la connection, j’ai une liste de commandes à  taper, que je connais pas coeur, MAIS je me dis qu’il doit y avoir un moyen plus simple de faire cela.

C’est là que j’ai découvert le shell scripting (tadaaaaaaaaaam)

Alors vas-y que j’ai écrit mon tit script tout bien tout propre, mais AMARCHPO (comme vous vous en doutiez vu que sinon je vienrai pas demander de l’aide)

Je dois faire un modprobe pour installer mon driver et c’est là où le bat blesse : faut avor les droits (de chie).

Question : comment je peux faire un script qui me fera ce que je demande avec juste un clic sur l’icone wifiON.sh ?

Notez que je suis open : si il y a un meilleur moyen que le script je prends. Mais c’est la seule idée que j’aie pour le moment et me cogner la clef WEP en hexadecimal ca me gonfle un peu (surtout que je dois bien compiler un kernel tous les jours => reboot)

Marchi de votre aide

le mieux, c’est dans le script, de lancer la commande modprobe en su.

petit rappel : su sert a se faire passer pour un certain utilisateur (en l’occurence : root).

inconvenient : il vas te demander le mot de passe root a chaque fois que tu vas lancer le script.

Un probleme de droit sous linux ? reponse : SUDO
Lis la doc, tu veras c’est simple. ça permet de donner des droits administrateur à certaines personnes pour effecturer certaines taches. Tu configures les droits avec la commende VISUDO et tout (ou presque…) est expliqué dans l’ exemple fourni.

Si tu configures bien le truc tu peux executer la commande que tu désires (et uniquement celle la) en tant que root sans entrer de mot de passe (tu peux choisir d’en metre un si tu veux) de la façon suivante : SUDO commande
Ce message a été édité par Kane–sama le 19/05/2004

Merci de vos réponses. Je teste ça ce soir et je vous tient informé.

De mon point de vue, c’est un probleme hardware, donc cote noyau, et pas cote utilisateur, donc ca devrait etre fait automatiquement par le systeme au demarrage.
Je suppose que tu utilise une mdk, regarde un peu du cote de /etc/rc.local , ca devrait faire la farce.

LoneWolf
Chargement de driver en mode user? nan mais nawak.

[quote]De mon point de vue, c’est un probleme hardware, donc cote noyau, et pas cote utilisateur, donc ca devrait etre fait automatiquement par le systeme au demarrage.
Je suppose que tu utilise une mdk, regarde un peu du cote de /etc/rc.local , ca devrait faire la farce.

LoneWolf
Chargement de driver en mode user? nan mais nawak[/quote]Je me suis mal fait comprendre : je sais qu’il faut être root et c’est là tout le problème : comment je peux scripter ca. (Reponse : su dans le script on dirait, mais je vais essayer ce soir)

Il n’y a pas de problème matériel vu que tout fonctionne très bien si je fais tout à la mimine (en root)

BTW c’est une gentoo et je ne veux pas que ca se lance au démarage parce que ma carte est pas toujours dans l’emplacement PCMCIA (j’ai aussi une connexion filaire)

haha mais justement :P;;

Sous linux, il y a un outil magique qui s’appelle le cardmanager. Ca permet de gerer en hotplug les cartes pcmcia et de loader automatiquement les drivers quand une carte est insere.
Y a moyen de faire ca propre, je te dis

LoneWolf
Meme sous linux, on fait du propre

Voila ce que je voulais entendre ^^

Bon ce soir : man cardmanager

Bon j’ai essayé de faire un su et ca marche po (culé de murphy)

voila mon script 

================
su -

echo Monte la carte PCMCIA
modprobe ndiswrapper
echo Configure la carte
iwconfig wlan0 mode Managed
iwconfig wlan0 key maclefhexa
iwconfig wlan0 channel 6
echo Monte la carte
ifconfig wlan0 up
echo OK

Il me demande de rentrer mon password root et pis ca fait rien :’(

je vais essayer SUDO en attendant

sinon tu fait avec le setuid bit qui permet de lancer un programme avec les droits du proprio du fichier.
en root tu fait un truc du genre:
chown root:root tonscript.sh //pour mettre root comme proprio de ton script
chmod 755 tonscript.sh  // pour que n’importe qui puisse l’executer mais que seul root puisse le modifier (méga important sinon ca permettrai a n’importe qui d’executer n’importe quel commande sur ton pc)
chmod o+s tonscript.sh // le setuid proprement dit qui permet a n’importe qui d’executer ton script comme s’il avait lancé en tant que root.

Ce message a été édité par Staz le 19/05/2004

pourquoi pas lancer le service au demarage ?

comme avec init.d sous gentoo ?

Koubiiak

J’ai lu en diagonale, mais ton module, pourquoi ne le charges tu pas au démarrage avec module.autoload plutot que de faite un modprobe, ou met le directement dans ton noyau ca sera encore plus simple

[quote]sinon tu fait avec le setuid bit qui permet de lancer un programme avec les droits du proprio du fichier.[/quote]Sauf qu’un script shell suid root c’est pas du tout une bonne idee (et heureusement sous Linux ca marche pas).
Tu as une race condition entre le moment ou le kernel va executer le shell apres avoir lu la 1ere ligne du fichier, et le moment ou le shell va ouvrir le fichier. Ce qui fait que si tu as de la chance (que le kernel te donne la main entre le lancement du shell et l’ouverture du fichier par le shell) et que tu fais un truc un peu comme ca (en creant un programme pour le faire plus vite). tu peux executer des commandes en root :

$ ln -s /path/to/suid-script /tmp/aaa $ /tmp/aaa & $ rm /tmp/aaa $ mv monscript.sh /tmp/aaa[/quote]Pour cette raison on ne fait pas de script shell suid, il vaut mieux utiliser suidperl qui est fait pour, sudo, ou ecrire un wrapper en C pour lancer le shell (mais la il faut bien faire attention au PATH, IFS et autres variables d'environement qui peuvent influer sur les programmes que tu executes dedans).

Gnérgrmmblb, trois fois que je retape ce message.

Donc, je disais, pourquoi ne pas faire un :

emerge hotplug

Après, tu te débrouilles pour que hotplug après l’insmod/modprobe charge ton script de conf en suid root, et basta.

Ce message a été édité par Ainulindalë le 30/05/2004
Ce message a été édité par Ainulindalë le 30/05/2004