Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1372 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Divers

  Lancement d'un script qui foire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancement d'un script qui foire

n°825180
Siron
Posté le 06-07-2006 à 11:43:27  profilanswer
 

Bonjour, dans l but de lancer un serveur hlds sur une gentoo à chaque démarrage de la machine j'ai  un fichier lancé avec le rc-update.
 
Fichier :
 

Citation :

#!/sbin/runscript
 
depend() {
        # le démon a besoin de la fonction  internet
        need net  
}
 
start() {
        # affiche un message sur ce qui est fait
        ebegin "Starting HLDS server1"  
        # Lance le processus comme un démon et enregistre le pid
        start-stop-daemon --start --quiet --background --pidfile /var/run/serverhlds1.pid --make-pidfile --exec "screen -S server1 -m -d /home/server1/hlds_run -game cstrike +maxplayers 22 -noipx -autoupdate -tos +post 27015 +map de_dust2 -pingboost 3 -log 2"  
        # Affiche le succès ou l'échec
        eend $?
}
stop() {
        # affiche un message pour l'utilisateur  
        ebegin "Stopping HLDS server1"
        # arrete le démon en se servant du pid enregistré par la fonction start()
        start-stop-daemon --stop --quiet --pidfile /var/run/serverhlds1.pid --name server1
        # Affiche le succès ou l'échec
        eend $?
}


 
Le problème c'est que ça ne marche pas, quand je le lance j'obtient ça :

Citation :

/etc/init.d/server1 start
 * Re-caching dependency info (mtimes differ)...
 * Re-caching dependency info (mtimes differ)...
 * Re-caching dependency info (mtimes differ)...
 * Re-caching dependency info (mtimes differ)...
 * Starting HLDS server1 ...
start-stop-daemon: stat screen -S server1 -m -d /home/server1/hlds_run -game cstrike +maxplayers 22 -noipx -autoupdate -tos +post 27015 +map de_dust2 -pingboost 3 -log 2: No such file or directory      [ !! ]


 
Quelqu'un saurait-il me dire ou est mon erreur ?
 
Merci d'avance.
Siron

mood
Publicité
Posté le 06-07-2006 à 11:43:27  profilanswer
 

n°825204
Fork Bomb
Obsédé textuel
Posté le 06-07-2006 à 12:34:33  profilanswer
 

J'y connais rien mais je me demandes:
 
Tu es sur que ta 1ere ligne est correcte ?


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°825206
Siron
Posté le 06-07-2006 à 12:36:57  profilanswer
 

Oui casi.

n°825208
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 06-07-2006 à 12:39:02  profilanswer
 

sans vouloir troller : ils peuvent pas faire des scripts d'init normaux gentoo ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°825209
western
AJMM
Posté le 06-07-2006 à 12:43:28  profilanswer
 

as-tu essayer d'utiliser un chemin absolu pour l'exécutable?

n°825210
Siron
Posté le 06-07-2006 à 12:45:52  profilanswer
 

Heu, c'est pas un chemin absolut ça ?
/home/server1/hlds_run
 
(je débute sous linux)

n°825211
simple_stu​pid
Keep It Simple Stupid
Posté le 06-07-2006 à 12:49:30  profilanswer
 

Non, il parle de:


screen -S server1 -m -d /home/server1/hlds_run -game cstrike +maxplayers 22 -noipx -autoupdate -tos +post 27015 +map de_dust2 -pingboost 3 -log 2


 
C'est normal d'utiliser screen pour lancer ce serveur?
Un simple & ne suffirait pas.
Est-ce que tu as screen installé?
 
si tu tappes:


screen


 
et


whereis screen


 
il te renvoie quoi?

n°825213
francoispg​p
Posté le 06-07-2006 à 13:00:35  profilanswer
 

Code :
  1. #!/sbin/runscript

ne serait pas hazard un alias de bash ou un lien ?

n°825215
Siron
Posté le 06-07-2006 à 13:03:33  profilanswer
 

Citation :

C'est normal d'utiliser screen pour lancer ce serveur?
Un simple & ne suffirait pas.
Est-ce que tu as screen installé?


 
Screen est installé et fonctionne.
Et même sans le screen j'ai le message d'erreur.
Sinon on utilise fréquemment screen pour lancer un serveur, et je trouve ça fort pratique.
 

Citation :

ne serait pas hazard un alias de bash ou un lien ?


Heu, c'est possible  :ange:  (j'ai suivi un tuto)
En tout cas /sbin/runscript existe.
 
Merci pour l'aide.


Message édité par Siron le 06-07-2006 à 13:05:47
n°825216
Siron
Posté le 06-07-2006 à 13:07:56  profilanswer
 

Si je tape screen ben il me lance un screen.
Si je tape whereis screen j'obtients :

Citation :


screen: /usr/bin/screen /usr/share/screen /usr/share/man/man1/screen.1.gz

mood
Publicité
Posté le 06-07-2006 à 13:07:56  profilanswer
 

n°825384
Siron
Posté le 06-07-2006 à 21:12:50  profilanswer
 

Sinon y a pas moyen de faire plus simple pour lancer le serveur au démarrage ?

n°825399
Siron
Posté le 06-07-2006 à 21:54:36  profilanswer
 

Ce sont les argumants de screen et hlds qui coincent.
Mais j'ai absolument pas compris comment les faire passer, il se trouve que la documentation dispo sur internet et une traduction du man, et donc c'est toujours la même que je croise.
 
http://www.delafond.org/traducmanf [...] mon.8.html


Message édité par Siron le 06-07-2006 à 21:54:52
n°825509
western
AJMM
Posté le 07-07-2006 à 11:07:32  profilanswer
 

il est possible au boot, init.d ne connais pas l'emplacement de screen... essaye de modifier ton script en mettant le schéma absolu pour le binaire (/usr/bin/screen au lieu de screen)

n°825511
western
AJMM
Posté le 07-07-2006 à 11:08:09  profilanswer
 

PS. '-d' et autres options sont les options de la commande screen, pas de la commande start-stop-daemon

n°825517
Siron
Posté le 07-07-2006 à 11:18:23  profilanswer
 

En fait d'après ce que l'ai lu, il faut passer les parametres comme cela :
 
-- -d -x -y, ainsi comme ça, d, x et y seront passé au programme.
 
Mon problème c'est que je ne sais pas du tout comment faire pour mon cas, vu que j'ai 2 parties avec des parametres qui porte pas sur le même endroit.
 
J'ai testé un peu au hasard mais en vain.
 
Si je ne met pas le double - devant, il prend les arguments comme une partie du chemin et donc fatalement il ne trouve pas ce qu'il doit lancer.


Message édité par Siron le 07-07-2006 à 11:19:58
n°825520
western
AJMM
Posté le 07-07-2006 à 11:21:59  profilanswer
 

as-tu essayé avec /usr/bin/screen?

n°825522
Siron
Posté le 07-07-2006 à 11:25:47  profilanswer
 

Non, en fait j'ai viré le screen pour le moment, j'essaye déjà de passer les paramettres que du hlds_run, mais même si je rajoute le double -, hlds_run m'indique que le parametre n'est pas valide.
 
Y a pas moyen de créer un sous script qui contient la ligne de commande et qui serait appelé par ce script-ci pour éviter d'avoir des arguments dans le --exec ?
 
(en fait je suis casi sur que il trouvera screen sans le chemin absolut).


Message édité par Siron le 07-07-2006 à 11:26:37
n°825529
western
AJMM
Posté le 07-07-2006 à 11:46:11  profilanswer
 

que s'est passe-t-il si tu lance "à la main"

start-stop-daemon --start --quiet --background --pidfile /var/run/serverhlds1.pid --make-pidfile --exec "/usr/bin/screen -S server1 -m -d /home/server1/hlds_run -game cstrike +maxplayers 22 -noipx -autoupdate -tos +post 27015 +map de_dust2 -pingboost 3 -log 2"

n°825534
Siron
Posté le 07-07-2006 à 11:52:02  profilanswer
 

C'est pareil si je lance start-stop-daemon a la main.
 
Mais si je lance le screen et hlds sans le start-stop-daemon, alors ça fonctionne.

n°825536
western
AJMM
Posté le 07-07-2006 à 11:55:44  profilanswer
 

si tu lance la commande, quel est l'erreur retourné?

n°825538
Siron
Posté le 07-07-2006 à 11:58:14  profilanswer
 

Si je lance avec start-stop-daemon, et que je met les guillemets, il m'indique qu'il trouve pas le répertoire existe pas (en gros il suporte pas les guillemets), sans les guillemets, il me dit que "-- l" n'est pas un paramètres valide (en gros les parametres de hlds et screen le perturbe).


Message édité par Siron le 07-07-2006 à 11:58:35
n°825541
western
AJMM
Posté le 07-07-2006 à 12:04:18  profilanswer
 

OK.
 
1) Tu crée un script qui lance le machin (par ex. dans le répértoire /home/toto/bin et appelé lance_cs_server.sh:


#!/bin/sh
 
/usr/bin/screen -S server1 -m -d /home/server1/hlds_run -game cstrike +maxplayers 22 -noipx -autoupdate -tos +post 27015 +map de_dust2 -pingboost 3 -log 2


 
2) tu modifie ton script  


#!/sbin/runscript
 
depend() {
        # le démon a besoin de la fonction  internet
        need net  
}
 
start() {
        # affiche un message sur ce qui est fait
        ebegin "Starting HLDS server1"  
        # Lance le processus comme un démon et enregistre le pid
        start-stop-daemon --start --quiet --background --pidfile /var/run/serverhlds1.pid --make-pidfile --exec /home/toto/bin/lance_cs_server.sh
        # Affiche le succès ou l'échec
        eend $?
}
stop() {
        # affiche un message pour l'utilisateur  
        ebegin "Stopping HLDS server1"
        # arrete le démon en se servant du pid enregistré par la fonction start()
        start-stop-daemon --stop --quiet --pidfile /var/run/serverhlds1.pid --name server1
        # Affiche le succès ou l'échec
        eend $?
}


 
Le problème de cette solution est que le pid contenu dans /var/run/serverhlds1.pid est le pid du shell (le pid du screen est le pid du shell+1), etc.

n°825545
zaverell
Posté le 07-07-2006 à 12:11:17  profilanswer
 

Salut moi je fais comme ca pour lancer vdr dans un screen
 
dans /etc/init.d/vdr
lancement du daemon vdr  

Citation :

#!/bin/sh  
 #  
 # /etc/init.d/vdr  
 
 
 case "$1" in  
     start)  
         echo -n "Vdr start : "  
         /home/zaverel/vdr/screen_run_vdr.sh
         echo "done."  
         ;;  
     screen)  
         echo -n "Vdr screen ... "  
           screen -r
         echo "done."  
         ;;  
     *)  
         echo "start ou screen ?"  
         ;;  
 esac  


 
lancement de screen qui lance le fichier run
screen_run_vdr.sh
 

Citation :

#!/bin/sh
cd /home/zaverel/vdr
 screen -d -m -S vdr ./run.sh  


 
dans run.sh  , tu met lacommande pour lancer ton serveur hlds
C'est à adapter à ton cas .
Les fichiers screen_run_vdr.sh et run.sh doivent etre executable
Par contre c'est lancé sous le compte root .
 
 :hello:

n°825553
Siron
Posté le 07-07-2006 à 12:34:08  profilanswer
 

Je suis en train de tester avec

Citation :

#!/bin/sh
 
/usr/bin/screen -S server1 -m -d /home/sever1/hlds_run -game cstrike +maxplayers 22 -noipx -autoupdate -tos +post 27015 +map de_dust2 -pingboost 3 -log 2


 
Mais il n'a pas l'air de lancer hlds.
 
Sinon Zaverell, on peut lancer sur un compte autre que le root ?

n°825556
western
AJMM
Posté le 07-07-2006 à 12:49:49  profilanswer
 

certes, lancé la chose en root peut-être intéressant pour les ressources, etc. mais imaginons que quelqu'un a trouvé une faille dans le code du serveur qui permet d'exécuter du code sur la machine... En cas de root, le cracker aura un accès root!

n°825562
zaverell
Posté le 07-07-2006 à 13:04:30  profilanswer
 

on doit pouvoir lancer le serveur sous un autre compte en placant un su  -  *utilisateur* mais ca peut entrainer des problemes de locales ( à voir si c'est genant ou pas )
 

Citation :

#!/bin/sh
cd /home/zaverel/vdr  
su  -  *utilisateur* screen -d -m -S vdr ./run.sh  


 
 
sinon essaie avec des quotes  "    "
 

Citation :

#!/bin/sh
 
/usr/bin/screen -S server1 -m -d "/home/sever1/hlds_run -game cstrike +maxplayers 22 -noipx -autoupdate -tos +post 27015 +map de_dust2 -pingboost 3 -log 2"

n°825644
Siron
Posté le 08-07-2006 à 13:55:12  profilanswer
 

En fait je crois que la source du problème vient du fait que je ne peux pas lancer le serveur en root :
Hlds m'indique que le paramètre -game cstrike n'est pas bon.
Alors que sous l'user server1 y a aucun problème.
Etrange non ?

n°825769
Siron
Posté le 08-07-2006 à 21:39:43  profilanswer
 

Personne a déjà été confronté au problème ?

n°825823
Siron
Posté le 09-07-2006 à 11:28:51  profilanswer
 

Bon, j'ai rajouté un su server1 dans le fichier avec la ligne de commande pour lancer le serveur (vu que celui-ci ne veut pas se lancer en root) : grossière erreur !!!  :whistle:  
 
Je crois que le serveur lance ssh et plein de truc après le script du serveur, quité le mode root, il ne voulait plus lancé ssh et tout le reste (ftp, ...), j'ai donc perdu tout mes accès à la machine (et le serveur ne c'est pas lancé pour autant).
 
Bref après passage au mode rescue de ovh pour virer ma boulette, je me retrouve au point de départ.
Le seul point positif c'est que j'apprends un paquet de truc sur ce qu'il ne faut pas faire sous linux.  [:aztechxx]  
 
Y a personne qui peut me dire pourquoi il refuse de lancer le serveur ? (ou bien comment lancer le serveur sous l'user server1 au boot de la machine ?)  
 
 :sweat:  :(


Message édité par Siron le 09-07-2006 à 11:31:40
n°825829
simple_stu​pid
Keep It Simple Stupid
Posté le 09-07-2006 à 11:57:52  profilanswer
 

Récupère un ligne de commande qui fonctionne avec l'user server1, et mets dans un script un truc du genre:
 


su server1 -c "cd ~ && commande"


Message édité par simple_stupid le 09-07-2006 à 12:04:35
n°825830
Siron
Posté le 09-07-2006 à 12:01:28  profilanswer
 

Heu, manque pas un nom d'utilisateur dans ta ligne ?
Et le cd est toujours nécéssaire si dans la ligne de commande j'utilise les chemins absoluts ?


Message édité par Siron le 09-07-2006 à 12:01:54
n°825831
simple_stu​pid
Keep It Simple Stupid
Posté le 09-07-2006 à 12:04:00  profilanswer
 

Oups, il manque bien sûr le nom de l'utilisateur.
Le cd, on ne sait jamais, c'est pour que le pwd du processus soit bien le home directory (histoire qu'il puisse créer les répertoires qui vont bien, etc).

n°825834
Siron
Posté le 09-07-2006 à 12:11:08  profilanswer
 

Donc ça donne ça, je testerais tantôt car la si ça plante comme y a 1 heure j'aurais pas le temps de relancer le systeme.
 

Citation :

#!/bin/sh
su server1 -c "cd ~ && /usr/bin/screen -S server1 -m -d /home/server1/hlds_run -game cstrike +maxplayers 22 -noipx -autoupdate -tos +post 27015 +map de_dust2 -pingboost 3 -log 2"


 
Et si ça marche  :)  je n'aurais plus qu'a trouver comment stoper le serveur avec etc/init.d/server1 stop.
 
Sinon par curiosité, pourquoi le serveur ne se lance pas en root (avec une simple commande de lancement) ?, hlds me dit que le premier paramètre n'est pas valide.


Message édité par Siron le 09-07-2006 à 12:11:30
n°825839
simple_stu​pid
Keep It Simple Stupid
Posté le 09-07-2006 à 12:31:36  profilanswer
 

Pour des raisons de sécurité, peut-être qu'il ne veut pas se lancer en root, ce qui est plutôt sage.

n°825877
Siron
Posté le 09-07-2006 à 15:03:21  profilanswer
 

Je veux bien que ce soit sage, mais si c'est le cas ce serait sympas d'avoir un message d'erreur adequa.
 
Sinon avec ce que tu ma dit simple_stupid, le server se lance bien  :jap:  
 
Maintenant pour le stopper avec etc/init.d/server1 stop :
il refuse parceque le pid n'est pas le même que celui qui est dans le fichier server1.pid (à cause du shel je crois), mais je crois que y a moyen de tuer le processus avec le nom du screen ou le nom du processus hlds (prefere avec le nom du screen car si y a plusieur serveur hlds) ?

n°825880
Siron
Posté le 09-07-2006 à 15:21:01  profilanswer
 

Pour stopper avec "etc/init.d/server1 stop" j'ai mis ça dans le fichier qui regle le start-stop-daemon :
 

Citation :

start-stop-daemon --stop --quiet --user server1


 
Et ça marche (normalement y a quel server1 qui est lancé sous l'user server1).
 
Donc mes problèmes sont reglés.
Merci pour l'aide qui m'a été très nutile.
Siron

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Divers

  Lancement d'un script qui foire

 

Sujets relatifs
script d'arret et démarrage service sauvegardeScript pour recup info d'une photo
Lancement k3b [resolu]script shell renvoi erreur à l'éxécution
Script linux pour relancer serviceScript shell
openssl et scriptutiliser un CTRL-T dans un script shell ?
Script bashHELP lancer un script lors de la connexion ftp
Plus de sujets relatifs à : Lancement d'un script qui foire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR