OVH Cloud OVH Cloud

SHELL DOS pour un programme en service

2 réponses
Avatar
Francky's
J'ai une application qui s'exécute en service et elle lance un Shell au DOS
pour exécuter un fichier de commande (.BAT) qui contient un NET USE pour se
connecter sur un autre serveur, un MOVE pour transférer, et un NET USE
/DELETE.

Une fois sur 20 il bloque et dans les traces indique qu'il bloque après que
le MOVE ai été complété. et ne va pas plus loins.

Existe t'il une façon pour corriger ce problème ?

Également, existe t'il un façon de faire un "End Process" dans le
gestionnaire des tâches pour les CMD.EXE SYSTEM qui sont bloqués. Même en
étant administrateur, j'obtient un "Access Denied" à chaques tentatives

Merci !

2 réponses

Avatar
Clive Lumb
Francky's wrote:
J'ai une application qui s'exécute en service et elle lance un Shell
au DOS pour exécuter un fichier de commande (.BAT) qui contient un
NET USE pour se connecter sur un autre serveur, un MOVE pour
transférer, et un NET USE /DELETE.

Une fois sur 20 il bloque et dans les traces indique qu'il bloque
après que le MOVE ai été complété. et ne va pas plus loins.

Existe t'il une façon pour corriger ce problème ?

Également, existe t'il un façon de faire un "End Process" dans le
gestionnaire des tâches pour les CMD.EXE SYSTEM qui sont bloqués.
Même en étant administrateur, j'obtient un "Access Denied" à chaques
tentatives

Merci !


Hello Francky's

Je soupçonne que le NET USE /DELETE bloque parcequ'il y a des fichiers
encore ouverts. Pour savoir tu devrai pouvoir rediriger la sortie des
commandes vers un fichier log avec la rédirection ("> file.log" pour créer
un nouveau fichier, ">> file.log" pour ajouter à la fin).

D'abord est-il vraiment nécessaire d'utiliser NET USE ? Peut-être c'est pour
utiliser un autre nom d'utilisateur/Mot de passe ?
Sinon, alors tu devrais pouvoir faire le MOVE avec des unc, par ex: MOVE
Serveur1cheminetc Serveur2etc.

Si tu veux vraiment contrôler et avoir un log detaillé, penser à utiliser
Robocopy (dispo dans le ressource kit Windows; préférer la version XP qui
marche aussi sur Win2K, télécharger ici si tu veux
http://clumb.free.fr/robocopy.exe). Il a aussi l'avantage de pouvoir passer
sur un fichier recalcitrant (ouvert en écriture par exemple) après un nombre
donné d'essais.

J'utilise Robocopy pour faire des copies "miroir" de 3 serveurs - la
première copie est très longue, mais après il ne copie que les nouveaux
fichiers et les fichiers modifiés. Il peut aussi surveiller un repertoire et
copier des fichiers dès qu'ils sont modifiés.

Bon courage
Clive

Avatar
Francky's
Merci !

J'avais penser de loger des trace pour voir l'éxécution du fichier BAT mais
c'est vrai que je n'avais pas pensé de rediriger la commande move.

J'utilise le NET USE car le programme s'exécute en service "system account"
et ce mode ne donne pas accès aux autres serveur à mon pgm et pour toute
sorte de contraintes, je ne peux pas l'éxécuter d'un autre façon (User
account). Je suis contraint par des raisons de sécurité entre serveurs par
des administrateurs.

Mais je te remercie, tu me donne la possibilité d'aller plus loins dans mon
investigation.





Francky's wrote:
J'ai une application qui s'exécute en service et elle lance un Shell
au DOS pour exécuter un fichier de commande (.BAT) qui contient un
NET USE pour se connecter sur un autre serveur, un MOVE pour
transférer, et un NET USE /DELETE.

Une fois sur 20 il bloque et dans les traces indique qu'il bloque
après que le MOVE ai été complété. et ne va pas plus loins.

Existe t'il une façon pour corriger ce problème ?

Également, existe t'il un façon de faire un "End Process" dans le
gestionnaire des tâches pour les CMD.EXE SYSTEM qui sont bloqués.
Même en étant administrateur, j'obtient un "Access Denied" à chaques
tentatives

Merci !


Hello Francky's

Je soupçonne que le NET USE /DELETE bloque parcequ'il y a des fichiers
encore ouverts. Pour savoir tu devrai pouvoir rediriger la sortie des
commandes vers un fichier log avec la rédirection ("> file.log" pour créer
un nouveau fichier, ">> file.log" pour ajouter à la fin).

D'abord est-il vraiment nécessaire d'utiliser NET USE ? Peut-être c'est pour
utiliser un autre nom d'utilisateur/Mot de passe ?
Sinon, alors tu devrais pouvoir faire le MOVE avec des unc, par ex: MOVE
Serveur1cheminetc Serveur2etc.

Si tu veux vraiment contrôler et avoir un log detaillé, penser à utiliser
Robocopy (dispo dans le ressource kit Windows; préférer la version XP qui
marche aussi sur Win2K, télécharger ici si tu veux
http://clumb.free.fr/robocopy.exe). Il a aussi l'avantage de pouvoir passer
sur un fichier recalcitrant (ouvert en écriture par exemple) après un nombre
donné d'essais.

J'utilise Robocopy pour faire des copies "miroir" de 3 serveurs - la
première copie est très longue, mais après il ne copie que les nouveaux
fichiers et les fichiers modifiés. Il peut aussi surveiller un repertoire et
copier des fichiers dès qu'ils sont modifiés.

Bon courage
Clive