Démarrer Teamspeak au boot proprement....

Forum traitant de la distribution sécurisée montante nommée IP cop et basée sur la distribution Smoothwall. C'est à l'heure actuelle le forum le plus actif du site.

Modérateur: modos Ixus

Démarrer Teamspeak au boot proprement....

Messagepar fraedhrim » 19 Déc 2004 19:42

Salut !

OK c'est une passerelle pas un serveur mais bon imaginons que j'ai envie d'installer TeamSpeak quand même....

Je précise que j'ai cherché dans le forum comment lancer un service au boot d'IPCOP. J'ai trouvé qu'on pouvait mettre un appel à un script dans le "/etc/rc.d/rc.local" ou faire son propre "/etc/rc.d/rc.mon_service" et ajouter son appel dans le "/etc/rc.d/rc.sysinit".

En l'occurence il s'agit donc de lancer TeamSPeak de la façon la plus propre, sous-entendu de la façon qui respecte le plus le mode de fonctionnement des services de IPCOP. Pour ça j'ai un script qui marche en root du genre "/etc/rc.d/rc.teamspeak start" qui fait des vérifs de PID et tout le bazar et lance le service.

Si je veux faire en sorte que ça se lance au boot je fais comment ? J'ajoute "/etc/rc.d/rc.teamspeak start" au rc.local ?

Si je veux faire tourner le service sous autrechose que root comment je fais ? J'ai essayé d'attribuer toutes l'arborescence de TS à nobody et de faire tourner le service en nobody (su nobody -c ...) mais ça ne démarre pas (pas de message d'erreur). J'ai essayé de créer un user et de lui donner les droits sur l'arborescence de TS : pas mieux.

Bref y'a-t-il un moyen de lancer le service "proprement" et sous autrechose que root ?

Merci.

A+
Avatar de l’utilisateur
fraedhrim
Amiral
Amiral
 
Messages: 1264
Inscrit le: 27 Jan 2004 01:00
Localisation: Nantes

Messagepar fraedhrim » 20 Déc 2004 10:38

UP ?

Y'a bien quelqu'un qui connait un peu IPCOP ici ? :lol:

A+
Avatar de l’utilisateur
fraedhrim
Amiral
Amiral
 
Messages: 1264
Inscrit le: 27 Jan 2004 01:00
Localisation: Nantes

Messagepar fraedhrim » 20 Déc 2004 18:28

C'est fou ça : à chaque fois que je demande de l'aide moi j'obtiens que dalle....

Ca vaut bien la peine de se donner du mal pour les autres.... Snifff :cry: ....
Avatar de l’utilisateur
fraedhrim
Amiral
Amiral
 
Messages: 1264
Inscrit le: 27 Jan 2004 01:00
Localisation: Nantes

Messagepar siphon69 » 20 Déc 2004 18:38

Ta question n'a rien de spécifique à IpCop. C'est un mode de démarrage de type RedHat qui est implémenté sur IpCop (que je connais très peu en fait).

Pour avancer, documentes-toi. Consultes les scripts existants, et essayes de t'en inspirer pour implémenter ton script de démarrage.

Lis les pages de manuel de chkconfig également.

Voilà pour débuter....

Regarde également le runlevel par défaut dans ton inittab.

Sois fort !

:)
Avatar de l’utilisateur
siphon69
Second Maître
Second Maître
 
Messages: 31
Inscrit le: 26 Oct 2003 00:00
Localisation: Dardilly

Messagepar YT-1300 » 20 Déc 2004 19:17

Bonjour il y a une solution à ton probleme.

Je dois faire mon script demain. Je le posterai içi :D

@+tard,

YT
Avatar de l’utilisateur
YT-1300
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 345
Inscrit le: 02 Juil 2002 00:00
Localisation: Renage

Messagepar fraedhrim » 20 Déc 2004 20:40

Salut,

Siphon69, ma question est au contraire très spécifique à IPCOP. S'il s'était agit de faire ça sous une redhat je n'aurais pas eu de problème "en me documentant" au besoin.
Je pense que tu n'as pas bien regardé comment marchait IPCOP de ce côté là. On n'y retrouve pas les petits rcX.d et ses S99blabla. Quand au chkconfig et au runlevel ça ne s'applique pas non plus. Sans rancune.

YT-1300 merci pour toute info.


Le sujet étant de faire un démarrage de teamspeak server propre et si possible en autre chose que root sous IPCOP qui ne démarre pas les servicesexactement comme le ferait un autre linux du genre redhat & co....

Merci encore.

A+
Avatar de l’utilisateur
fraedhrim
Amiral
Amiral
 
Messages: 1264
Inscrit le: 27 Jan 2004 01:00
Localisation: Nantes

Messagepar siphon69 » 20 Déc 2004 21:48

Sans vouloir polémiquer, je persiste à penser que les scripts de démarrage d'IpCop sont un démarrage 'à la redhat', avec des scripts dans /etc/init.d et des liens dans les répertoires de runlevel rc1.d, rc2.d... Etc.

Vouala

A +

8)
Avatar de l’utilisateur
siphon69
Second Maître
Second Maître
 
Messages: 31
Inscrit le: 26 Oct 2003 00:00
Localisation: Dardilly

Messagepar braouazou » 20 Déc 2004 22:02

Non c'est bien plus simple que ça (pas de notion de runlevel).
Le démarrage des services est géré par rc.sysinit, qui appelle successivement les scripts contenus dans /etc/rc.d/ (par convention, ceux ci-sont nommés rc.nomduservice).

Il ne te reste qu'à t'inspirer des scripts existants pour te créer ton propre script.

Pour ce qui est de le lancer en tant que nobody ou autre, il te faut regarder les options de teamspeak.
La plupart des daemons sont lancés par root, et le processus parent lance des processus fils sous un user sans privilège (l'idéal étant de créer un utilisateur spécifique pour ton serveur avec des droits réduit au minimum). Et cela est géré par le serveur lui-même (fais un teamspeakd --help pour connaitre les options si c'est bien son nom ;-) ).

@++
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 LorD_JLP » 20 Déc 2004 23:01

Hello tout le monde !

Quelle que soit la distibution, il y'a toujours plusieurs moyens de démarrer un service sous Linux ...

- Si un script "à la RedHat" existe, autant s'en servir, c'est en effet le type de démarrage le plus propre.
- Sinon, l'ajout d'une ligne dans le fichier /etc/rc.local du type "su utilisateur -c "(cd /rep/de/mon/service; ./service &)" -l -p 1> /tmp/service.log 2>&1" permets de démarrer un service sous un utilisateur quelconque ...

Il te reste sinon à adapter un script existant afin de lancer le plus proprement ton service, comme indiqué plus haut ...

Bonne chance, et rapelle toi que Linux n'est pas un système user-friendly si tu ne cherches pas à comprendre comment il fonctionne en profondeur, en fonction de ta distrib !

@+
[ LorD JLP... | www.biuns.fr.st | #BiUns@undernet.org ]
[ 9T <-> SpeedTouch <-> NuxBox MDK <-> HomeLan | WifiLAN ]
Avatar de l’utilisateur
LorD_JLP
Enseigne de vaisseau
Enseigne de vaisseau
 
Messages: 157
Inscrit le: 01 Août 2003 00:00
Localisation: Eckbolsheim - France

Messagepar fraedhrim » 21 Déc 2004 00:27

Houlà !

Je pense pas être un noob (tiens ça c'est une bonne réflexion de noob). Je cherchais juste à faire propre. S'il s'agit de lancer un service à la rc.local c'est sûr que c'est pas difficile.... Je vais faire ça.

Mais voilà ce qu'on récolte quand on veut faire les choses dans les règles.....

Je me demandais comment les rc.truc étaient lancés. Je suppose qu'ils ne sont pas tous lancés à l'aveugle vu que certains gèrent des périphériques particuliers. En regardant dans le rc.sysinit je ne vois pas où est fait le distingo.

Quant à démarrer le bousin pas en root j'avais trouvé entre temps.


Ca devient limite désespérant : à chaque fois que quelqu'un pose une question il se fait rembarrer. Je suis déçu de l'ambiance que prend Ixus ces derniers temps.

Bref la prochaine fois je ferai un lancement porc et je fermerai ma $%#&!. Mais c'est pas comme ça qu'on va faire évoluer les choses.... Une réflexion sur un autre topic était que le site traite de sécurité et que le reste n'était pas intéressant ("urgent") ben il va être beau mon IPCOP avec des bidouilles dans le lancement des services et un serveur qui tourne en root....
Ca me donne envie de rebrancher mon routeur netgear tiens....

Enfin merci à ceux qui essayé de m'aider vraiment en ne s'enfonçant pas à parler de choses qu'ils ne connaissent pas vraiment.....

Ixus du soir, désespoir....
Avatar de l’utilisateur
fraedhrim
Amiral
Amiral
 
Messages: 1264
Inscrit le: 27 Jan 2004 01:00
Localisation: Nantes

Messagepar YT-1300 » 21 Déc 2004 18:22

Bonjour bonjour.

Bon je n'ai pas encore tester mais voila ce que je pense faire.

Dans un premier temp installer mon serveut TeamSpeak dans /usr/local/opt/TeamSpeak

Ensuite je crée l'utilisateur teamspeak.

Maintenant je fais mon pitit script " rc.TeamSpeak " que je place dans /etc/rc.d/ et dont voici son contenu :

#!/bin/sh
# YT-1300
# 21/12/2004

# -= Script de Lancement de TeamSpeak =-
su teamspeak -c "( cd /usr/local/opt/TeamSpeak; ./teamspeak2-server_startscript start )"

# FiN

Bon j'avoue que c'est très très simple. Tu peux utiliser ce que LorD_JLP t'avait donné, il log les infos en plus.

Donc avec ça, ton script se trouve au même endroit que tout les autres script de lancement de ton IpCop et est lancé par un autre utilisateur que root à chaque démarrage.

Voili voilou.

En ce qui concerne le stop et bien le processus sera killé à l'arrêt ou au redémarrage de la machine.

@+tard,

YT. :D
Avatar de l’utilisateur
YT-1300
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 345
Inscrit le: 02 Juil 2002 00:00
Localisation: Renage

Messagepar fraedhrim » 21 Déc 2004 21:57

Salut !

Merci pour ces infos.
Entre temps j'ai bidouillé un truc en prenant un script sur le forum de TeamSpeak que j'ai mis dans un rc.teamspeak. Il fait les même vérifs que le script d'origine.

Mais est-ce que le fait de créer un rc.teamspeak avec les bons droits suffit à ce qu'il parte au démarrage (je n'ai pas pu rebooter encore la machine, ma fiancette est une mordue de Enemy Territory et là sa team utilise le serveur TS2..... :? ) ?

A+


Le script pour lancer TS2 en tant que tss2 :

Code: Tout sélectionner
#! /bin/bash
# Copyright (c) 2004 TeamSpeak team   All rights reserved.
#
# Author: pwk.linuxfan 2004
# Modified by Derek "Cybernaut" Jackson - www.DigitalNines.com
#
# chkconfig: 345 85 15
# description: Runs and kills TeamSpeak Voice server at boot time and shutdown.
# Source function library.
#. /etc/rc.d/init.d/functions

# START OF CONFIG SECTION
# WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
USER=tss2
DIR=/var/tss2_rc2
# END OF CONFIG SECTION

# See how we were called.
case "$1" in
        start)
                if [ -e $DIR/tsserver2.pid ]; then
                        echo "tsserver2.pid already exists...server already started ?";
                        echo "If you are sure the server is not running, delete tsserver2.pid"
                        exit 1
                else
                        if [ "$UID" = "0" ]; then
                                for c in $(seq 1 10); do
                                        echo -n "!"
                                        sleep 1
                                done
                                echo !
                        fi
                        echo "Starting the TeamSpeak Voice server..."
                        if [ -e $DIR/server_linux ]; then
                                if [ ! -x $DIR/server_linux ]; then
                                        echo "server_linux is not executable; trying to set it."
                                        chmod u+x $DIR/server_linux
                                fi
                                if [ -x $DIR/server_linux ]; then
                                        WD=`pwd`
                                        cd $DIR
                                        su $USER -c "$DIR/server_linux -PID=tsserver2.pid" &
                                        cd $WD
                                else
                                        echo "server_linux is not executable; fix this."
                                        exit 4
                                fi
                        else
                                echo "Couldnt find server_linux."
                                exit 5
                        fi
                fi
        ;;
    stop)
                if [ -e $DIR/tsserver2.pid ]; then
                        echo -n "Stopping the TeamSpeak Voice server..."
                        if ( kill -TERM `cat $DIR/tsserver2.pid` ); then
                                for c in $(seq 1 300); do
                                        if [ -e $DIR/tsserver2.pid ]; then
                                                echo -n "."
                                                sleep 1
                                        fi
                                done
                        fi
                        if [ -e $DIR/tsserver2.pid ]; then
                                echo "server does not shutdown cleanly - killing"
                                kill -KILL `cat $DIR/tsserver2.pid`
                                rm $DIR/tsserver2.pid
                                sleep 5
                        else
                                echo "done"
                        fi
                else
                        echo "tsserver2.pid is missing; is the server stopped already?"
                        #exit 7 - Should not be here as doesn't allow restart if server is already stopped.
                fi
        ;;
        restart)
                $0 stop && $0 start || exit 1
        ;;
        status)
                if [ -e $DIR/tsserver2.pid ]; then
                        echo "The TeamSpeak Voice server is running."
                        exit 0
                else
                        echo "The TeamSpeak Voice server is stopped."
                        exit 3
                fi
        ;;
        passwords)
                if [ -e $DIR/server.log ]; then
                        date=$(cat $DIR/server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^\([0-9]
\+-[0-9]\+-[0-9]\+ [0-9]\+:[0-9]\+:[0-9]\+\).*$/\1/")
                        spass=$(cat $DIR/server.log | grep "superadmin account info: username: superadmin" | tail -n 1 | sed
"s/^.*username: superadmin password: \([a-z0-9]\+\).*$/\1/")
                        pass=$(cat $DIR/server.log | grep "admin account info: username: admin" | tail -n 1 | sed "s/^.*usern
ame: admin password: \([a-z0-9]\+\).*$/\1/")
                        echo "Following passwords were generated on $date"
                        echo "superadmin = \"$spass\""
                        echo "admin      = \"$pass\""
                else
                        echo "server.log not found; maybe the server has not been started yet?"
                        exit 1
                fi
        ;;
        *)
                echo "Usage: $0 {start|stop|restart|status|passwords}"
                exit 2
esac
exit 0
Avatar de l’utilisateur
fraedhrim
Amiral
Amiral
 
Messages: 1264
Inscrit le: 27 Jan 2004 01:00
Localisation: Nantes

Messagepar YT-1300 » 22 Déc 2004 18:02

Bonjour l'ami

Normalement tout les scripts se trouvant dans /etc/rc.d sont executés au démarrage.

Maintenant il ne te reste plus qu'a tester.

Fais croire a une panne de courant ou alors pendant le repas avec ta miss tu en profites pour rebooter la machine.

@+ tard et bon courage.

YT :wink:
Avatar de l’utilisateur
YT-1300
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 345
Inscrit le: 02 Juil 2002 00:00
Localisation: Renage

Messagepar fraedhrim » 22 Déc 2004 18:14

Salut !

Houuu bonne idée la panne de courant ! Je vais laisser trainer le cable d'alim dans le passage !
Mieux ! Je vais le faire maintenant. Je suis au boulot et je ferai croire à un problème passager... Ah nan merd'... Elle va croire que IPCOP n'est pas fiable et vouloir remettre le netgear....

Va falloir que je crée un topic pour trouver une solution ! :lol:

En tout cas merci pour le coup de main ça fait plaisir.

A+
Avatar de l’utilisateur
fraedhrim
Amiral
Amiral
 
Messages: 1264
Inscrit le: 27 Jan 2004 01:00
Localisation: Nantes

Messagepar YT-1300 » 23 Déc 2004 12:05

Helloooooooooo

Alors ça donne quoi tes scripts :?:

Tiens nous au courant de la solution final adoptée.

@+tard,

YT 8)
Avatar de l’utilisateur
YT-1300
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 345
Inscrit le: 02 Juil 2002 00:00
Localisation: Renage

Suivant

Retour vers IPCop

Qui est en ligne ?

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

cron