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

  FORUM HardWare.fr
  Programmation
  Divers

  [Script DOS] aider moi pour creer ce script svp :)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Script DOS] aider moi pour creer ce script svp :)

n°338309
LOLYLO
Posté le 20-03-2003 à 11:14:11  profilanswer
 

Hello world    
 
Voilà j'ai un script à creer pour ma boite et j'ai du mal à le réaliser (pas trop mon truc).
pouvez-vous me donner un coup de main ?
 
voilà la finalité :
 
un fichier hosts.bat
 
au lancement il devra proposer le choix suivant et l'utilisateur devra choisir une des 4 propositions :
 
Quel OS avez-vous ?
1 win95 ou 98
2 win nt
3 win 2000
4 win xp
 
 
en fonction du choix le fichier le script va chercher si le fichier hosts existe sur le système en question, si oui le script devra lui ajouter un série d'adresse ip (locales) avec alias prédéfinie.Dans l cas contraire le script devra creer un fichier hosts avec les adresse ip en question et le placer au bon endroit.
 
pour ce cas on prendra comme exemple :
 
192.168.0.20 www.toto.com
192.168.0.21 www.titi.com
...
 
 
Et pour finir : un second script verif.bat qui va :
 
rechercher le fichiers hosts en renvoyer la réponse à l'utilisateur (ex: "les adresses ip ne sont pas indiqué", "le fichier hosts n'est pas au bon endroits" etc...)
 
puis un test de ping mais ça ca reste la partie la plus simple lol
 
 
Merci à tous ceux qui pourront me fournir de l'aide qui me sera bien précieuse    

mood
Publicité
Posté le 20-03-2003 à 11:14:11  profilanswer
 

n°338320
JPA
Posté le 20-03-2003 à 11:31:22  profilanswer
 

il n'y a pas besoin de demander à l'utilisateur quel OS il a :
Il suffit de faire :
ver|find "Windows 95"
if not errorlevel goto Win95
ver|find "Windows 98"
if not errorlevel goto Win98
ver|find "Windows NT"
if not errorlevel goto WinNT
ver|find "Windows 2000"
if not errorlevel goto Win2k
echo Vous travaillez encore avec win 3.11 ?
pause
goto fin
:Win95
...
goto suite
:Win98
...
goto suite
 
etc. etc.
 
A+
 

n°338326
JPA
Posté le 20-03-2003 à 11:38:43  profilanswer
 

pour le fichier hosts, moi je copierais brutalement un fichier modèle situé sur le serveur sans chercher à rajouter des lignes à la main, ce qui obligerait à vérifier dans le script si ces lignes existent pour ne pas les retrouver en double, triple,...etc.

n°338352
LOLYLO
Posté le 20-03-2003 à 12:02:02  profilanswer
 

Le problème c'est qu'il s'agit d'un cas assez particulier...
 
en fait les utilisateurs sont des clients qui ne sont pas dans l'entreprise et des utilisateurs novices qui plus est...C'est pour accéder à un extranet via un logiciel vpn.
 
Les procédures actuelles sont de leur donner les manip par tel. le prob c'est que ce sont pas trpo des flèches question pc d'ou l'utilité de garder un scénario proche de celui que j'ai cité et donc l'impossibilité de stocker le hosts sur un serveur (ce qui aurait été bcp plus simple :) )

n°338384
JPA
Posté le 20-03-2003 à 12:21:04  profilanswer
 

Déjà tes utilisateurs novices n'auront pas à se demander quel est l'OS...
Pour le hosts je reprendrai la discussion cet après-midi
A+

n°338463
JPA
Posté le 20-03-2003 à 13:43:09  profilanswer
 

je reprends le cours de la discussion :
Si tes users ont un fichier hosts existant, le contenu de celui-ci doit-il être conservé ?
si NON :
tu crée ton nouveau fichier hosts par une suite de commande :
echo 192.168.0.20 www.toto.com >c:\chemin\hosts
echo 192.168.0.21 www.titi.com >>c:\chemin\hosts
etc.
si OUI :
il faut éviter de créer plusieurs fois la même ligne. Ce qui donne:
find "192.168.0.20 www.toto.com" c:\chemin\hosts
if not errorlevel goto suite1
echo 192.168.0.20 www.toto.com >>c:\chemin\hosts
:suite1
find "192.168.0.21 www.titi.com" c:\chemin\hosts
if not errorlevel goto suite2
echo 192.168.0.21 www.titi.com >>c:\chemin\hosts
:suite2
 
Problème :
si une adresse de site change, tu auras les 2 entrées dans le hosts... et je ne sais pas si c'est la première ou la dernière qui compte...
 
Reposte si tu veux des précisions.
 
A+
 
 
 

n°338501
LOLYLO
Posté le 20-03-2003 à 14:14:10  profilanswer
 

Donc en gros celà doit donner qque chose dans le genre :
 
echo on
ver|find "Windows 95"  
if not errorlevel goto Win95  
ver|find "Windows 98"  
if not errorlevel goto Win98  
ver|find "Windows NT"  
if not errorlevel goto WinNT  
ver|find "Windows 2000"  
if not errorlevel goto Win2k  
echo Vous travaillez encore avec win 3.11 ?  
pause  
 
 
jusque là je pige
la dernière étape (oui le hosts existant doit etre remplacé) :
 
echo 192.168.0.20 www.toto.com >c:\chemin\hosts  
echo 192.168.0.21 www.titi.com >>c:\chemin\hosts  
etc.  
 
je pige aussi
 
 
mais j'arrive pas à voir la syntax pour effectuer la jonction entre les deux....
 
 
quelle commande indiquer pour faire en gros :
 
par exemple dans le cas d'un win95 :
 
ver|find "Windows 95"  
if not errorlevel goto Win95  
blablablblala
.....
.....
 
 
:win95
echo 192.168.0.20 www.toto.com >c:\windows\hosts  
echo 192.168.0.21 www.titi.com >c:\windows\hosts  
 
 
est-ce corect ?
 
par contre dans la syntax que tu m'a décris je ne pige pas le goto fin que tu indiques après la vérification du système...?
 
En tout cas les informations que m'a indiqué m'aide bcp, je commence à m'y metre tout de suite !
 
 

n°338555
LOLYLO
Posté le 20-03-2003 à 14:45:22  profilanswer
 

Je viens de tester, il ne reconnait pas la commande :
 
if not errorlevel goto Win95  
 
 
et chose interessante il commence à creer le host mais en prenant compte uniquement de la dernière adresse indiquée...
 
 
je peux pex etre creer un script par système ca contournerai le problème...  
mais ca n'explique pas pourquoi il ne prend en compte que la dernière adresse

n°338608
LOLYLO
Posté le 20-03-2003 à 15:22:44  profilanswer
 

pour creer le host c'est réglé.
 
il me manque uniquement une syntaxe correcte pour la première parti du script -> à asvoir pour la détection de l'os...
 
peux-tu m'éclairer là dessus stp :)

n°338663
JPA
Posté le 20-03-2003 à 16:15:32  profilanswer
 

errorlevel :
la commande exacte est :
if not errorlevel 1 got xxx
(j'avais oublié le 1) désolé
 
pour le hosts je pense que tu as vu que quand tu fais :
echo 192.168.0.20 www.toto.com >c:\chemin\hosts  
tu crée un nouveau fichier  
et quand tu fais :
echo 192.168.0.20 www.toto.com >>c:\chemin\hosts  
tu ajoutes le texte à la fin du fichier
 
Si l'anglais ne te rebutes pas tu peux aller voir ce site génial :
http://www.robvanderwoude.com/index.html
rubrique batch files.
A+

mood
Publicité
Posté le 20-03-2003 à 16:15:32  profilanswer
 

n°338702
LOLYLO
Posté le 20-03-2003 à 16:42:31  profilanswer
 

De mon coté j'ai créé ça :
 
@ECHO OFF
:debut
ECHO.
ECHO Menu de demarrage:
ECHO 1) Windows 95
ECHO 2) Windows 98
ECHO 3) Windows NT4
ECHO 4) Windows 2000
ECHO 5) Windows XP
ECHO.
Choice /c:12345 /n  
If errorlevel 5 GOTO WinXP
If errorlevel 4 GOTO Win2000
If errorlevel 3 GOTO WinNT
If errorlevel 2 GOTO Win98
If errorlevel 1 GOTO Win95
 
 
 
Le prob c'ets qu'il me marque des messages d'erreurs comme quoi il n'arrive pas à creer des fichiers !!arfff

n°338783
JPA
Posté le 20-03-2003 à 17:23:17  profilanswer
 

Je dois m'en aller, donc je réponds vite :
Je te déconseille d'utiliser choice qui n'existe pas en standard sous NT et 2000 (Xp, je sais pas). Il est dispo uniquement avec le kit de ressources techniques.
 
La solution que je te propose pour tester l'OS me semble bien préférable.
A demain pour de nouvelles aventures.
 
Jean-Pierre

n°339444
LOLYLO
Posté le 21-03-2003 à 10:15:18  profilanswer
 

J'ai essayé avec ta méthode et le truc c'est que'il me crée 3 fois les mêmes adresses dans le hosts.
 
Et ya un prob sur lé vérification du système.
 
La vérification se fait vis à vis de quoi ? vis à vis du nom qui se trouve dans les propriétés du poste de travail ? ou il check un autre endroit ?

n°339450
JPA
Posté le 21-03-2003 à 10:19:51  profilanswer
 

poste ton script que je regarde ou envoie le moi par mail s'il est trop long
 
A+

n°339453
LOLYLO
Posté le 21-03-2003 à 10:22:32  profilanswer
 

Je continue mes test (sous du 95 hic!)  
 
apparemment il ne diférencie pas les check des versions de windows, il me faudrait la synstaxe exacte des noms systèmes et de la commande car pour le moment sur 95, il m'installe le bloc de commande pour 95 ET 98 et les autres commandes sont en erreurs vue que les dossiers n'existent pas mais ca prouve qu'il tente de les creer et donc que la vérification d'os ne fonctionne pas :( :)
 
Si tu peux me donner un dernier coup de main pour finaliser ça ca serait super sympa, je suis proche du but :)

n°339464
JPA
Posté le 21-03-2003 à 10:27:15  profilanswer
 

Envoie ton script...
je parie que tu as oublié des goto suite après les exécutions des instructions spécifiques à chaque OS...
JP

n°339477
LOLYLO
Posté le 21-03-2003 à 10:33:39  profilanswer
 

Echo on
 
ver|find "Windows 95"
if not errorlevel 1 goto Win95
ver|find "Windows 98"
if not errorlevel 1 goto Win98
ver|find "Windows NT"
if not errorlevel 1 goto WinNT
ver|find "Windows 2000"
if not errorlevel 1 goto Win2k
ver|find "Windows XP"
if not errorlevel 1 goto WinXP
 
 
:Win95
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
 
:Win98
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
 
:WinNT
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
 
:Win2k
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
 
:WinXP
echo 127.0.0.1 localhost >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\system32\drivers\etc\hosts
 
PAUSE
 
EXIT
 
 
 
 
 
Voilà en gros....
 
Et faut que je me renseigne sur le chemin du host sur du windows xp home mais ça c'est du détail...
 

n°339478
JPA
Posté le 21-03-2003 à 10:36:02  profilanswer
 

Tu as effectivement oublié des goto :
 

LOLYLO a écrit :

Echo on
 
ver|find "Windows 95"
if not errorlevel 1 goto Win95
ver|find "Windows 98"
if not errorlevel 1 goto Win98
ver|find "Windows NT"
if not errorlevel 1 goto WinNT
ver|find "Windows 2000"
if not errorlevel 1 goto Win2k
ver|find "Windows XP"
if not errorlevel 1 goto WinXP
 
 
:Win95
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
goto suite
 
:Win98
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
goto suite
 
:WinNT
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
goto suite
 
:Win2k
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
goto suite
 
:WinXP
echo 127.0.0.1 localhost >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\system32\drivers\etc\hosts
 
:suite
PAUSE
 
EXIT
 
 
Voilà en gros....
 
Et faut que je me renseigne sur le chemin du host sur du windows xp home mais ça c'est du détail...
 


 
celà devrait déjà mieux fonctionner
A+

n°339493
LOLYLO
Posté le 21-03-2003 à 11:02:54  profilanswer
 

effectivement ya du mieux  :love:  
 
Echo on
 
ver|find "Windows 95"
if not errorlevel 1 goto Win95
ver|find "Windows 98"
if not errorlevel 1 goto Win98
ver|find "Windows NT"
if not errorlevel 1 goto WinNT
ver|find "Windows 2000"
if not errorlevel 1 goto Win2k
ver|find "Windows XP"
if not errorlevel 1 goto WinXP
 
goto fin
:Win95
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
 
goto suite
:Win98
echo 127.0.0.1 localhost >>c:\windows\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\hosts
 
goto suite
:WinNT
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
 
goto suite
:Win2k
echo 127.0.0.1 localhost >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\winnt\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\winnt\system32\drivers\etc\hosts
 
goto suite
:WinXP
echo 127.0.0.1 localhost >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.21 titi.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.25 toto.microsoft >>c:\windows\system32\drivers\etc\hosts
echo 192.168.100.30 messagerie.microsoft >>c:\windows\system32\drivers\etc\hosts
 
PAUSE
 
EXIT
 
 
 
hmm à la fin du script il me dit :
goto suite
Etiquette introuvable
 
 
Il me semble que j'ai loupé une étape....
 
 
Par contre je pige toujours pas comment fonctionne la détection des OS...
 

n°339495
LOLYLO
Posté le 21-03-2003 à 11:03:50  profilanswer
 

Surtout s'il faut que je détecte un xp home ....

n°339519
JPA
Posté le 21-03-2003 à 11:36:06  profilanswer
 

Etiquette introuvable :
tu as oublié l'étiquette :suite juste avant PAUSE
 
Comment fonctionne la détection de l'os :
Quand tu tapes la commande ver (Version) tu obtiens (sur mon win 2k) :
 
Microsoft Windows 2000 [Version 5.00.2195]
 
le caractère | permet de rediriger la sortie d'une commande vers une autre commande. Ici find.
Si find trouve la chaîne, il l'affiche et errorlevel est fixé à 0
sinon il n'affiche rien et errorlevel est fixé à 1
 
la commande if (voir if /?)
p:\>if /?
Lance l'exécution conditionnelle dans un programme de commandes.
 
IF [NOT] ERRORLEVEL nombre commande
IF [NOT] chaîne1==chaîne2 commande
IF [NOT] EXIST nom_de_fichier commande
 
  NOT                   Indique que Windows 2000 n'effectue la commande que si
                        la condition est fausse.
 
  ERRORLEVEL nombre     Condition vraie si le dernier programme exécuté a
                        retourné un code sortie supérieur/égal au nombre donné.
  commande              Spécifie la commande à exécuter si la condition est
                        satisfaite.
 
A+

n°339555
LOLYLO
Posté le 21-03-2003 à 12:25:48  profilanswer
 

Ok c'était ça arf :)
 
je n'utilise jamais cette commande ver :)
 
Tu saurais pas par hasard si sur un xp home, la valeur string est "Windows XP Home" ou autre chose ?
 
J'ai pas moyen de tester ça :( on a pas de xp home ici et pas question de prendre un client comme cobaye lol )
 

n°339571
LOLYLO
Posté le 21-03-2003 à 12:44:52  profilanswer
 

Ca marche c'est super !!!!! :)))
 
Je te remercie 1000 fois :)
 
 
Tant que l'on y est tu peux pas me filer un coup de main pour le second script ?
 
principe :
 
détecter si le fichier hosts est présent si oui alors test de ping sur une des adresses indiquées
sinon un message s'affiche comme quoi le fichier n'est pas au bon endroit.
 
 
Par contre je sais pas si c'est possible, mais j'avais dans l'idée de faire une recherche sur une adresse ip à l'intérieur du hosts en même temps pour voir s'il s'agit bien du bon hosts...mais bon je là je vois pas comment....
 
 
Si tu peux m'aider sur ce second cas je t'en serait très reconnaissant sinon merci pour tout ce que tu as déjà fait :)  

n°339603
JPA
Posté le 21-03-2003 à 13:48:49  profilanswer
 

pour XP :
Je n'ai pas de XP home ici (que des Pro), vu qu'on se connecte à un domaine. Il faudrait savoir quelle est la différence pour pouvoir faire le test :
réponse à la commande ver
présence ou nom d'un fichier spécifique
...
 
pour détecter si le fichier hosts est présent :
if exist c:\dossier\hosts commande
 
par contre pour tester si c'est le bon, plutôt que de faire un ping d'une des adresses, pourquoi ne pas faire un find de "192.168.0.20 www.toto.com" dans le fichier hosts.
Tu choisirais de tezter dans le script la dernière adresse modifiée :
find "192.168.0.20 www.toto.com" c:\dossier\hosts
if not errorlevel 1 goto hostsOK
rem commandes si hosts n'est pas bon
...
...
goto suite2
:hostsOK
...
 
 
A+
 
 
 

n°340208
LOLYLO
Posté le 21-03-2003 à 23:39:41  profilanswer
 

C'est bon j'y suis arrivé grpace à ton aiguillage :)
 
 
je te remercie vivement pour ce sacré coup de main :)

n°341034
JPA
Posté le 24-03-2003 à 09:02:07  profilanswer
 

De rien. C'était presque facile pour un vieux fossile du DOS comme moi... :lol:
Si tu dois encore faire des scripts batch, je te conseille ce site, en anglais bien sur :
http://www.robvanderwoude.com/index.html
 
A+

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [Script DOS] aider moi pour creer ce script svp :)

 

Sujets relatifs
faille de sécurité dans mon script PhpWebGalleryAidez moi à afficher un 1er script en PHP.suis débutante.!! HELPEZ MOI
[PHP]Qui veut mon script de page de demarrage???pb avec mon script
[SQL] generer un script de sauvegarde en .sqlCréer un fichier Jpeg a partir d'objet "Image" ou "Graphics"
connection bdd permanente ou connection bdd par page de script ?Problème de focus... [Résolu] -- Script à emporter tout chaud...
Recherche script php compteur de click simple et performant[flash] introduire un script javascript dans du flash (newbie)
Plus de sujets relatifs à : [Script DOS] aider moi pour creer ce script svp :)


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