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 20/08/2012, à 05:07

user313

Batch > Shell

Bonjour,

Je possède deux serveurs, un tournant avec Windows serveur, et l'autre...Linux !
Sinon qu'est ce que je ferais ici smile.


Je suis débutant en linux, j'utilise ubuntu sur mon Ordinateur au quotidien, mais en scripts je n'y connais absoluement rien..

Je possède des scripts batch (windows donc) :

Lancement des srvs :
start_srvs.bat

start srv_mod_1.exe -f config.txt "sv_port 8997"
start srv_mod_1.exe -f config.txt "sv_port 8998"
start srv_mod_1.exe -f config.txt "sv_port 8999"
start srv_mod_1.exe -f config.txt "sv_port 9000"
start srv_mod_2.exe -f config2.txt "sv_port 9001"
start srv_mod_2.exe -f config2.txt "sv_port 9002"

srv_mod_*.exe : Programme executable du serveur.
-f : Lance l'éxecutable avec la configuration inscrite dans le *.txt
Config*.txt : Configuration du serveur


Reboot du serveur :

server_reboot.bat

SHUTDOWN -r -t 45500

Reboot le serveur après 45500 secondes.

Lancement des serveurs après reboot :

srvs_reboot.bat

C:\start_srvs.bat

Relances les serveurs (srvs) après le redemarrage du serveur.

Ma question est : Comment faire pour passer ces script Batch, windows en shell Linux ?
Avez vous des liens pour des tutoriaux ?

Cordialement,

user313

Edit : Voilà à quoi ça ressemble sur windows : http://uploaded.net/file/koygd0nv

Dernière modification par user313 (Le 20/08/2012, à 13:48)

Hors ligne

#2 Le 20/08/2012, à 09:08

serged

Re : Batch > Shell

J'ignore ce que font ces "srv_mod_1.exe".

S'il y a un logiciel équivalent "srv_mod" tu fais un script équivalent :

#!/bin/bash
srv_mod_1 -f /chemin/config.txt "sv_port 8997"
srv_mod_1 -f /chemin/config.txt "sv_port 8998"
srv_mod_1 -f /chemin/config.txt "sv_port 8999"
srv_mod_1 -f /chemin/config.txt "sv_port 9000"
srv_mod_2 -f /chemin/config2.txt "sv_port 9001"
srv_mod_2 -f /chemin/config2.txt "sv_port 9002"

"chemin" étant le chemin où sont ces config.txt
script que tu mets dans /etc/init.d (ou tu mets un lien symbolique vers ton script).

Pour redémarrer le serveur, c'est pareil !

shutdown -r -t 45500

LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#3 Le 20/08/2012, à 13:38

user313

Re : Batch > Shell

Bonjours,

Tout d'abord merci de votre réponse.

#!/bin/bash
srv_mod_1 -f /chemin/config.txt "sv_port 8997"
srv_mod_1 -f /chemin/config.txt "sv_port 8998"
srv_mod_1 -f /chemin/config.txt "sv_port 8999"
srv_mod_1 -f /chemin/config.txt "sv_port 9000"
srv_mod_2 -f /chemin/config2.txt "sv_port 9001"
srv_mod_2 -f /chemin/config2.txt "sv_port 9002"

Sur Linux ne faut-il pas aussi rajouter un start en début de chaque phrase pour indiquer que c'est une nouvelle ligne de commande ? On m'as parlé de "&&" ce qui donnerai :


#!/bin/bash
srv_mod_1 -f /chemin/config.txt "sv_port 8997"&&
srv_mod_1 -f /chemin/config.txt "sv_port 8998"&&
srv_mod_1 -f /chemin/config.txt "sv_port 8999"&&
srv_mod_1 -f /chemin/config.txt "sv_port 9000"&&
srv_mod_2 -f /chemin/config2.txt "sv_port 9001"&&
srv_mod_2 -f /chemin/config2.txt "sv_port 9002"

Je ne sais pas du tout si c'est possible, d'ailleur c'est pour cela que je viens sur ce forum smile.

____________________________________________________________________________

Dernière question :

Pour éxecuter un programme dès le démarrage de Linux, Est-ce que il y a un dossier comme sur win* ?


Cordialement,

user313

Hors ligne

#4 Le 20/08/2012, à 14:20

credenhill

Re : Batch > Shell

hello
l'équivalent du start DOS, tâche en arrière-plan, c'est un seul & en fin de ligne

srv_mod_1 -f /chemin/config.txt "sv_port 8997" &

Hors ligne

#5 Le 21/08/2012, à 09:04

serged

Re : Batch > Shell

Peut-être la version Linux du service (srv_mod_1) se détache toute seule et alors le & est inutile. Mais la là, faut voir avec la doc...


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#6 Le 21/08/2012, à 20:04

user313

Re : Batch > Shell

Bonsoir,

Tout d'abord merci de vos réponses. Je penses qu'avec ça, je devrais m'en sortir un minimum smile.

je vais quand même proposer mon code ici pour que vous validiez :

#!/bin/bash
#Start mod_1
/home/domain_protocol.fr/srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port 8997" &
/home/domain_protocol.fr/srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port 8998" &
/home/domain_protocol.fr/srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port 8999" &
/home/domain_protocol.fr/srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port 9000" &
#Start mod_2
/home/domain_unknow/srv_mod_1 -f /home/config-1_domain_unknow.txt "sv_port 9001" &
/home/domain_unknow/srv_mod_1 -f /home/config-1_domain_unknow.txt "sv_port 9002" &
/home/domain_unknow/srv_mod_1 -f /home/config-1_domain_unknow.txt "sv_port 9003" &

Cordialement,

user313

Hors ligne

#7 Le 21/08/2012, à 20:31

ljere

Re : Batch > Shell

je pense que ce serait plus lisible ainsi

#!/bin/bash
#Start mod_1
cd /home/domain_protocol.fr/
srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port 8997" &
srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port 8998" &
srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port 8999" &
srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port 9000" &
#Start mod_2
cd /home/domain_unknow/
srv_mod_1 -f /home/config-1_domain_unknow.txt "sv_port 9001" &
srv_mod_1 -f /home/config-1_domain_unknow.txt "sv_port 9002" &
srv_mod_1 -f /home/config-1_domain_unknow.txt "sv_port 9003" &

ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#8 Le 21/08/2012, à 20:35

pingouinux

Re : Batch > Shell

Bonjour,
Pour info, ton script pourrait s'écrire ainsi :

#!/bin/bash

#Start mod_1
port=8997
while true
do
   /home/domain_protocol.fr/srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port $port" &
   ((++port>9000)) && break
done

#Start mod_2
port=9001    # Les numéros se suivant, cette ligne peut être omise
while true
do
   /home/domain_unknow/srv_mod_1 -f /home/config-1_domain_unknow.txt "sv_port $port" &
   ((++port>9003)) && break
done

Ce n'est pas utile ici, mais ça présenterait de l'intérêt pour un nombre de commandes important.

Hors ligne

#9 Le 21/08/2012, à 20:40

pingouinux

Re : Batch > Shell

@ ljere #7 :
C'est effectivement une bonne idée, mais je pense qu'il serait prudent de mettre le chemin :

./srv_mod_1 -f .....

Hors ligne

#10 Le 21/08/2012, à 21:08

ljere

Re : Batch > Shell

oui j'ai hésité


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#11 Le 21/08/2012, à 21:23

Bousky

Re : Batch > Shell

Pour développer sur l'idée de pingouinux, en plus facilement modifiable (pas testé) :

#!/bin/bash

function start_mod {
        for ((port="$3" ; port<="$4" ; port++)) ; do
                "$1" -f "$2" "sv_port $port" &
        done
}

############################################################
# lignes à modifier pour adapter à la configuration voulue #
# start_mod exécutable config port_dbt port_fin            #
############################################################

# protocol.fr
start_mod /home/domain_protocol.fr/srv_mod_1 /home/config-1_domain_protocol.fr.txt 8997      9000
# unknown
start_mod /home/domain_unknow/srv_mod_1      /home/config-1_domain_unknow.txt      9001      9003

Les lignes commençant par "#" sont des commentaires, tu peux les supprimer ou les modifier sans soucis.

Dernière modification par Bousky (Le 21/08/2012, à 23:01)


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#12 Le 21/08/2012, à 22:56

user313

Re : Batch > Shell

Bonsoir,

merci de vos réponses.

Pourrais je savoir comment fonctionne vos scripts ? Je ne suis pas assez calé en shell pour comprendre leur effets..

#!/bin/bash

#Start mod_1
port=8997
while true
do
   /home/domain_protocol.fr/srv_mod_1 -f /home/config-1_domain_protocol.fr.txt "sv_port $port" &
   ((++port>9000)) && break
done

#Start mod_2
port=9001    # Les numéros se suivant, cette ligne peut être omise
while true
do
   /home/domain_unknow/srv_mod_1 -f /home/config-1_domain_unknow.txt "sv_port $port" &
   ((++port>9003)) && break
done
part++))

D'après le peu de c++ que j'ai fais j'imagines que cette partie à pour effet de rajouter +1 ports (8997 + part++ = 8998 ?)


8997      9000

la limite des ports pour srv_mod_1 ?


Si je veut par exemple rajouter 3 serveurs sur le mod_1 je met dans le shell :

8997      9003 (?)

Cordialement,

user313

Hors ligne

#13 Le 21/08/2012, à 23:01

Bousky

Re : Batch > Shell

user313 a écrit :
part++))

D'après le peu de c++ que j'ai fais j'imagines que cette partie à pour effet de rajouter +1 ports (8997 + part++ = 8998 ?)

C'est ça. Sauf que c'est « port » au lieu de « part » (oups…).

8997      9000

la limite des ports pour srv_mod_1 ?

Si je veut par exemple rajouter 3 serveurs sur le mod_1 je met dans le shell :

8997      9003 (?)

Exactement. Tu peux aussi ajouter des lignes en les construisant sur le même modèle


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#14 Le 21/08/2012, à 23:20

user313

Re : Batch > Shell

Pour développer sur l'idée de pingouinux, en plus facilement modifiable (pas testé) :

Pas testé mais ce script marche parfaitement smile

Merci beaucoup.

Je penses pas qu'avec un batch de windows on puisse faire ça, ce qui prouve que le pingouin est supérieur à la fenêtre wink

Cordialement,

user313

Hors ligne

#15 Le 22/08/2012, à 11:18

Bousky

Re : Batch > Shell

Tux est un manchot, pas un pingouin mad


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#16 Le 22/08/2012, à 11:49

ljere

Re : Batch > Shell

merci de passer ton sujet en résolu en modifiant le premier message et ajoute [Résolu] au titre.


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne