[RESOLU] [SCRIPT] [W2K] trouver sur quel serveur est un lecteur réseau

Hello,

C’est juste du script (et je suis une quiche en la matière) , pas de la programmation à proprement parler, mais je crois que c’est ici que j’aurai le plus de chance de trouver de l’aide. Voilà donc :

Soit une application (sur laquelle je n’ai aucune prise) qui va chercher certaines infos sur le lecteur M du PC client. Ce lecteur M: est un mappé au démarrage du PC.

Or un utilisateur a besoin d’accéder aux infos d’un site distant. Je vais donc lui faire un petit batch qu’il n’aura qu’à exécuter pour dé-mapper M: et le remapper sur l’autre serveur.

NET USE M: /D NET USE M: \\serveur2\repertoire

Pour bien faire, l’opération doit être réversible, afin de permettre à l’utilisateur de réutiliser le mapping original à tout moment. Une première solution est de mettre à sa disposition un second script qui rétablit les choses, et de le laisser se débrouiller. Mais ce n’est guère élégant.

Je souhaite donc que le script vérifie lui-même sur quel serveur est mappé M:

Comment-puis-je récupérer cette info ?

Merci de m’avoir lu !

Tu veux un script du type ‘vbscript’ ou un fichier de commande ?

“net use” tout court donne ce genre d’infos, mais reste à pouvoir les réutiliser …

Je veux rester en commandes, si possible.

Effectivement Gnocchi, si j’ajoute

j’obtiens

Nom local M: Nom distant \\serveur\repertoire Type de ressource Disque État OK Ouvertures 0 Connexions 1

Merci beaucoup. C’est déjà une avancée.

Mais à présent, comment récupérer le nom distant (UNC) dans une variable ?

C’est bien tout le probleme : Avec les commandes tu vas etre super limité (Le mieux est d’utiliser une variable d’environement dans le script de connexion de session du client… Mais as tu la main dessus ?).

Sinon , si tu fait un “Net Use M:>MonLecteur.TXT”, tu vas récupérer le resultat dans un fichier texte que tu pourras facillement géré avec un script. Mais avec une commande …je ne vois pas trop.

Finalement j’ai réussi.

Effectivement, je passe par un fichier texte temporaire, qui comporte le resultat de NET USE M:

Ensuite, je recherche la chaine de caractère correspondant à mon serveur 1 . Si je la trouve, je mappe sur le serveur 2. Si je ne la trouve pas, cela signifie que c’est déjà sur le serveur 2, et donc je mappe sur le serveur 1.

Voici le contenu du batch (sachant que nos serveurs s’appèlent srv-[nom du site]-file:

[code]@echo off

:: Titres et mise en forme ::

:: Variables ::

set site1=nom du site
set site2=nom du 2e site

:: Recupérer le nom du serveur sur lequel est mappé M: (via un fichier texte) ::

NET USE M: >c:\m_mapping_step1.txt
FINDSTR /I /R “srv-%site1%-file” c:\m_mapping_step1.txt

:: Definir quel sera le serveur de départ, et celui de destination

IF %ERRORLEVEL% EQU 0 (
SET site_ori=%site1%
SET site_dest=%site2%
) ELSE (
SET site_ori=%site2%
SET site_dest=%site1%)

:: Proc‚der au d‚placement

echo Déconnexion du serveur de %site_ori%…
NET USE M: /D
echo Connexion au serveur de %site_dest%…
NET USE M: \srv-%site_dest%-file%site_dest%_adabase

echo OK. M: A ETE REAFFECTE A %site_dest%
echo -----------------------------

:: Suppression du fichier texte

DEL c:\m_mapping_step1.txt
Pause[/code]