Question de débutant sou Linux ...

Le MNF (Multi Network Firewall) est un des produits pare-feu les plus richement pourvus en fonctionnalités du marché. Il est basé sur un kernel Linux 2.4 sécurisé. Ce forum est également destiné à accueillir tous les posts concernants les distributions Mandriva (anciennement Mandrake)

Modérateur: modos Ixus

Question de débutant sou Linux ...

Messagepar Looping87 » 04 Avr 2004 12:43

Bonjour à tous !!

Je voudrai savoir si il est possible sou la Mandrake MNF (et Linux en générale...) d'associer à une commande (que l'on soit n'importe ou dans l'arborescence) le lancement d'un script qui lancera lui même un logiciel ??

Dans mon cas : je shouterai pouvoir lancer mon serveur UT2004 à l'aide de la commande ut2k4 .... Cependant la ligne de commande de lancement du serveur UT est assez consistante compte tenu qu'il faille mettre toutes les options au démarrage ... Donc j'avais penser à réaliser un script ... (si qqn possède de la doc la desus je suis preneur...)...

Merci d'avance @tous ! :D
Avatar de l’utilisateur
Looping87
Aspirant
Aspirant
 
Messages: 108
Inscrit le: 13 Mars 2004 01:00
Localisation: Lyon

Messagepar tomtom » 04 Avr 2004 12:52

Bien sur !

Soit tu fais un script (c'est juste un fichier contenant la ligne de commande que tu souhaites executer, auxquels tu mets des droits d'execution : chmod +x )

Soit tu utilises les alias du bash, et tu crées cet alias dans le fichier de demarrage du bash : .bashrc dans ton home directory.

t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar Looping87 » 04 Avr 2004 12:56

oui bien sur ... :?

Pourrai tu être plus précis stp ... Notament au niveau de la signification du "bash" ... Et aussi de la synthaxe du script ...

D'après ce que j'ai compris un scipt se constitue de la manière suivante:

#!/bin/sh
la_ligne_de_commande_à_executer

C'est bien cela ?
Avatar de l’utilisateur
Looping87
Aspirant
Aspirant
 
Messages: 108
Inscrit le: 13 Mars 2004 01:00
Localisation: Lyon

Messagepar Fredish » 04 Avr 2004 13:00

Mais avec l'historique du bash, il suffit de taper la commande une fois et de la rappeler ensuite, non? Le fichier est ".bash_history".
Avatar de l’utilisateur
Fredish
Vice-Amiral
Vice-Amiral
 
Messages: 571
Inscrit le: 29 Août 2003 00:00

Messagepar Looping87 » 04 Avr 2004 16:38

Merci pour ton aide tomtom !

Je trouve bien le fichier bashrc , je peu l'editer , mais je ne sais pas trop comment faire pour lui indiquer quel commande correspond à koi ... Pourrai tu éclairer de nouveau ma lenterne stp ?? Merci d'avance ! :wink:

@bientôt ! :)
Avatar de l’utilisateur
Looping87
Aspirant
Aspirant
 
Messages: 108
Inscrit le: 13 Mars 2004 01:00
Localisation: Lyon

Messagepar tomtom » 04 Avr 2004 20:26

quand on commence sous linux, la première chose est d'apprendre à utliser les pages de manuel fournies avec ta distribution. Tu liras couramment : "regarde le man !"

Voici un extrait de ce que sort la commande "man bash"

Code: Tout sélectionner
alias [-p] [name[=value] ...]
              Alias with no  arguments  or  with  the  -p  option
              prints  the  list  of  aliases  in  the  form alias
              name=value on standard output.  When arguments  are
              supplied,  an  alias is defined for each name whose
              value is given.  A trailing space in  value  causes
              the  next word to be checked for alias substitution
              when the alias is expanded.  For each name  in  the
              argument  list  for which no value is supplied, the
              name and value of  the  alias  is  printed.


Voila, le bash qui est ton shell par defaut (c'est la cas sur quasi toutes les distributions), permet d'utiliser des alias pour reduire une commande.

On lit aussi que le fichier .bashrc est executé automatiquement au demarrage du bash.
En clair, toutes les commandes situées dans le fichier .bashrc sont executées quand tu lances ton bash (et donc dès que tu te connectes).

Ne te reste plus qu'à mettre une ligne dans ce fichier pour créer ton alias. D'ailleur, il y a surement deja des lignes d'alias dans ce fichier, comme par exemple :

Code: Tout sélectionner
alias ll='ls -l'



Dans ton cas, tu mettras une ligne de la forme :

Code: Tout sélectionner
alias ut2k4='/usr/bin/utserver -option1 -option2 -map=jhkjh -tututu'


(tu pourras remarquer que je ne connais pas du tout ut4, donc j'ai mis au pif ! )




Pour ce qui est d'un fichier script, c'est autre chose.
L'idée est de créer un script qui va executer ton serveur, et ensuite d'executer ton script.
Cela impose des contraintes en plus de l'alias : par exemple, tu devras te souvenir du chemin du script pour l'appeler.

Un fichier script est simplement une suite de commandes rentrées dans un fichier. Ce fichier doit posseder les droits d'execution (cf les docs sur les droits des fichiers unix) pour pouvoir etre executé.

La ligne dont tu parles au debut du fichier permet de specifier avec quel interpréteur tu appelles les commandes qui suivent.
Dans le cas d'un simple lancement, cette ligne n'est pas necessaire.
Tu peux donc te contenter de creer un fichier appelé ut2k4 et contenant uniquement ta ligne de commande pour lancer ton serveur.
Ensuite, tu donnes les droits d'execution à ce fichier :
Code: Tout sélectionner
chmod +x ut2k4

Et tu pourras l'executer simplement par la commande :
Code: Tout sélectionner
ut2k4


Ce sont deux approches différentes, pour ton cas je prefère la première qui est plus élégante.

Quant au .bash_history, c'est le fichier qui contient les denières commandes tapées. Effectivement, si tu as lancé une fois le serveur, tu peux le relancer en rappelant ta commande (à l'aide de la flèche du haut pour la retrouver), mais ce n'est pas tres efficace, surotut si plusieurs utilisateurs utilisent la machine avec le même compte, car tu ne maitrises pas entièrement ce fichier. Il est bien plus judicieux d'utiliser un alias.

Voiléa n'oublies pas les manpages et bienvenue dans le merveilleux monde linux !

t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar Looping87 » 04 Avr 2004 20:56

Merci bcp à toi tomtom !!

Tu n'as pas just éclairer ma lanterne ... Tu m'as illuminé ! lol
@bientôt et Merci encore !
Avatar de l’utilisateur
Looping87
Aspirant
Aspirant
 
Messages: 108
Inscrit le: 13 Mars 2004 01:00
Localisation: Lyon

Messagepar Looping87 » 08 Avr 2004 16:08

Arf ! J'ai un petit problème ... Les alias marchent bien pour certains fichiers mais pas pour tous ... Comme par exemple lors du lancement des serveur UT2k4 et Call of Duty ... En effet ceux--ci doivent être lancés depuis leur repertoire d'installation ! Comment puis-je faire en passant par des alias ?
Avatar de l’utilisateur
Looping87
Aspirant
Aspirant
 
Messages: 108
Inscrit le: 13 Mars 2004 01:00
Localisation: Lyon

Messagepar braouazou » 08 Avr 2004 16:23

Dans la description de l'alias, met le chemin complet vers l'exécutable.
Par exemple, si veux lancer un executable exec , qui se trouve dans le répertoire /usr/bin/, il faut inscrire: /usr/bin/exec --test_options
Avatar de l’utilisateur
braouazou
Amiral
Amiral
 
Messages: 1290
Inscrit le: 26 Fév 2003 01:00
Localisation: Dans les Vosges, au milieu des sapins!

Messagepar Looping87 » 08 Avr 2004 16:37

Oui j'ai bien mit le chemin complet ...
Mais il faudrait pour que cela marche que je soit dans leur repertoire d'install car lorsque je les lancent il cherchent des fichiers notament .pk3 et bien sure ne les trouvent pas si je ne suis pas dans leur rep. d'install ... Il faudrait donc .. si je ne me trompe pas un alias ki m'envoie a la fois dans le repertoire d'install et ki lance l'executable .... Qqn connaiterait-il l'astuce ??
Avatar de l’utilisateur
Looping87
Aspirant
Aspirant
 
Messages: 108
Inscrit le: 13 Mars 2004 01:00
Localisation: Lyon

Messagepar Jacques- » 09 Avr 2004 21:42

Crée un alias de ce style
alias ut2k4="(cd /Chemin_souhaité ; Commande à lancer)"

Tout ce qui est entre parenthèse sera executé dans le même shell, c'est à dire au sein du même groupe de commandes. Le ; permet de dire que la commande 1 est finie et que la suite représente la commande 2, etc... (la limite doit être liée aux nombres de caractères sur une ligne, soit quelque chose du genre 2048 si je ne m'abuse).

Autre solution mais plus "complexe", créer une fonction dans le shell:

truc () {
# Aller dans le bon répertoire
cd Repertoire1
# Lancer la commande 1
commande1
# Lancer la commande 2
commande 2
# Dire si tout a été fait
echo "je crois avoir tout lancé ..."
}

à coller dans le fichier .bashrc de ton répertoire perso et à appeler simplement en tapant truc.

Il y a des cours faciles à trouver avec google sur les commandes et les scripts.

Jacques
Avatar de l’utilisateur
Jacques-
Vice-Amiral
Vice-Amiral
 
Messages: 952
Inscrit le: 23 Jan 2003 01:00


Retour vers Mandriva MNF & SNF

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité