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

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

Marsh Posté le 20-03-2003 à 11:14:11    

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    

Reply

Marsh Posté le 20-03-2003 à 11:14:11   

Reply

Marsh Posté le 20-03-2003 à 11:31:22    

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+
 

Reply

Marsh Posté le 20-03-2003 à 11:38:43    

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.

Reply

Marsh Posté le 20-03-2003 à 12:02:02    

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 :) )

Reply

Marsh Posté le 20-03-2003 à 12:21:04    

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+

Reply

Marsh Posté le 20-03-2003 à 13:43:09    

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+
 
 
 

Reply

Marsh Posté le 20-03-2003 à 14:14:10    

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 !
 
 

Reply

Marsh Posté le 20-03-2003 à 14:45:22    

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

Reply

Marsh Posté le 20-03-2003 à 15:22:44    

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 :)

Reply

Marsh Posté le 20-03-2003 à 16:15:32    

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+

Reply

Marsh Posté le 20-03-2003 à 16:15:32   

Reply

Marsh Posté le 20-03-2003 à 16:42:31    

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

Reply

Marsh Posté le 20-03-2003 à 17:23:17    

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

Reply

Marsh Posté le 21-03-2003 à 10:15:18    

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 ?

Reply

Marsh Posté le 21-03-2003 à 10:19:51    

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

Reply

Marsh Posté le 21-03-2003 à 10:22:32    

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 :)

Reply

Marsh Posté le 21-03-2003 à 10:27:15    

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

Reply

Marsh Posté le 21-03-2003 à 10:33:39    

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...
 

Reply

Marsh Posté le 21-03-2003 à 10:36:02    

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+

Reply

Marsh Posté le 21-03-2003 à 11:02:54    

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...
 

Reply

Marsh Posté le 21-03-2003 à 11:03:50    

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

Reply

Marsh Posté le 21-03-2003 à 11:36:06    

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+

Reply

Marsh Posté le 21-03-2003 à 12:25:48    

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 )
 

Reply

Marsh Posté le 21-03-2003 à 12:44:52    

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 :)  

Reply

Marsh Posté le 21-03-2003 à 13:48:49    

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+
 
 
 

Reply

Marsh Posté le 21-03-2003 à 23:39:41    

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

Reply

Marsh Posté le 24-03-2003 à 09:02:07    

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+

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed