Membres: 1429  •  Messages: 46612  •  Sujets: 6155  •  Merci d'accueillir jumps, notre dernier membre.
Merci de vous connecter ou de vous inscrire.

Connexion avec identifiant, mot de passe et durée de la session
Recherche avancée  


Auteur Sujet: Script de récupération de données  (Lu 4205 fois)

0 Membres et 2 Invités sur ce sujet

Hors ligne O-ERON

  • travailleur fou
  • Super modérateur
  • Grand Maître
  • *****
  • Messages: 4782
  • Karma: 0
  • Sexe: Homme
    • Codeweaver
Re : Script de récupération de données
« Réponse #30 le: 21 février 2009 à 19:17:18 »
oui, il y a certainement moyen de repogrammer une tâche si la personne n'est pas connectée au réseau mais je ne sais pas comment faire
probablement pas compliqué à faire

bah au bout de 6 mois il va se rendre compte que ça n'est pas une solution de backup correcte et avec un peu de chance ça te retombera dessus  :P :D
[Sig removed by Admin: Total file size of all images in sig may not exceed 20 TB]

Hors ligne Spip5

  • Grand Maître
  • *****
  • Messages: 1960
  • Karma: 1
  • Sexe: Homme
Re : Script de récupération de données
« Réponse #31 le: 24 février 2009 à 15:39:28 »
Je viens d'avoir des précisions car mes directives étaient vraiment floues.

Les données ne doivent être récupérées que si le poste se trouve dans les locaux. Cela évite donc de se compliquer la vie.

Voici donc ce que je compte faire de façon plus précise:
1_Passer sur tous les portables et y activer le wake-on lan.
2_Programmer sur le serveur le lancement du script chaque semaine. Commande: at.
3_Dans le script, réveiller les machines. Commandes: wolcmd.
4_Dans le script, lancer la copie des données. Commande: robocopy, qui a l'avantage de ne pas réecrire les données non modifiées d'une fois sur l'autre. Paramètres à donner à robocopy: verbose, inclure les sous-répertoire, réessayer une seule fois si échec, attendre 10 secondes avant de réessayer, etc.
5_Dans le script, éteindre les machines.

Ce qui devrait donner si je n'avais qu'un seul poste:
@echo off

@réveil des machines
wolcmd adresses_mac.txt 1

@Délai d'attente le temps qu'elles se réveille
wait 150

@Copier les données
robocopy c:\temp\test\data\ c:\temp\test\save /v /e /r:1 /w:10 /ts /fp /xo >>c:\temp\test\robocopy.log



EDIT en cours de rédaction:

A nouveau, changement de directives. Nous n'avons pas le droit d'installer robocopy sur le serveur. P*t**n de chef à na noix ! :evil: Il refuse tout simplement d'en faire la demande. J'ai beau lui défendre robocopy comme je peux (les données ne sont pas recopiées-écrasées à chaque fois), il s'en moque.

Ca valait bien la peine de me demander de m'en occuper s'il savait déjà précisément ce qu'il voulait faire ! A quoi bon me l'avoir délégué ?

Par ailleurs, il refuse également le principe de la tâche planifiées programmée sur le serveur. Je crois que je vais le tuer...

Bref, je quand même essayer de passer mes nerfs ailleurs.

Cela étant, voilà où j'en suis: j'ai un chef qui veut que la récupération de données soit lancée par un script d'ouverture de session, mais ne se fasse qu'une fois par semaine et non pas à chaque connexion de l'utilisateur. Je lui ai dit que ce n'était pas faisable à ma connaissance. Il m'a dit de creuser.
Je doute que son idée soit réalisable. Pouvez-vous me le confirmer ou, au contraire, me donner une nouvelle piste ?
« Modifié: 24 février 2009 à 15:42:17 par Spip5 »

Hors ligne O-ERON

  • travailleur fou
  • Super modérateur
  • Grand Maître
  • *****
  • Messages: 4782
  • Karma: 0
  • Sexe: Homme
    • Codeweaver
Re : Script de récupération de données
« Réponse #32 le: 24 février 2009 à 18:47:50 »
je ne pensais de toute façon pas taper le script et la tâche sur le serveur mais bien sur chaque poste
il faut juste faire exactement de la même façon mais tu lance le script depuis les clients
seul soucis, ça ne se fera que si la machine est allumée mais bon, on ne peut pas tout avoir

j'ose espérer qu'il n'est pas contre installer robocopy sur les clients :)

reste à régler la question du déploiement du script et de robocopy et ainsi que la génération de la tâche planifiée sur tous les postes client (pas oublier de prévoir un éventuel système de màj)
[Sig removed by Admin: Total file size of all images in sig may not exceed 20 TB]

Hors ligne ferrari

  • Membre VIP
  • Grand Maître
  • *
  • Messages: 8161
  • Karma: 10
  • Sexe: Homme
Re : Script de récupération de données
« Réponse #33 le: 24 février 2009 à 21:55:44 »
plus ca va et moins je comprends l'objectif de ton taf spip.
ton pseudo chez te demande de faire une tache mais refuse toute solution technique viable

Hors ligne Spip5

  • Grand Maître
  • *****
  • Messages: 1960
  • Karma: 1
  • Sexe: Homme
Re : Script de récupération de données
« Réponse #34 le: 09 mars 2009 à 09:09:49 »
Merci à vous pour vos réponses.


Beaucoup de neuf depuis mon dernier post.

Tout d'abord, après avoir insisté pour que je fasse le lancement hebdo en batch (ce qui me semblait impossible), mon responsable m'a dit: "je vais vous donner un indice: utiliser du javascript.
Réponse de ma part: "Je ne connais PAS ce langage."
- "Mais il est très facile d'emploi, allez-y, essayez."

J'ai donc commencé à essayer d'en comprendre les bases, non sans mal.
J'ai vu au passage que ce langage ne servait pas à cela, qu'il était avant tout destiné aux pages web.
Pourquoi m'inviter à l'utiliser alors ? Réponse: car c'est le langage que mon chef connait !
Quelle prise de risque de sa part ! Quelle clarté dans son jugement ! Quelle ouverture d'esprit !

Au bout de deux heures, voyant que je patinais, il a de lui même rédigé ce qui permettait de lancer un autre script batch une fois par semaine:
d=new Date();

if (d.getDay()==3)

 {

  var WshShell = new ActiveXObject("WScript.Shell");

  var oExec = WshShell.run("c:\\copy_data.bat");
 
 }

On s'est donc retrouvé avec un script en java, qui servait à lancer un autre script en batch (bonjour la logique et la facilité !).



Peut de temps après, j'ai reçu par MP un message sur le forum http://batch.xoo.it .
Citer
Bonjour Spip5

j'ai demandé de l'aide sur un forum anglais pour ton histoire de date

un membre plus expérimenté que moi à réaliser ceci
, les commentaires sont en anglais je pense que tu maitrises cette langue et le backup s effectue chaque vendredi à 12h00.

dis moi si ça fonctionne
J'ai demandé sans utilisation de planificateur de tâches and robocopy

    @echo off

    :evaluate
    call :set_current_day
    if not %DoW%==Fri (
    echo It's not even Friday.
    echo Here you can just exit the script with
    echo goto :eof
    echo or you can wait and retest
    ping -w 800 -n 39601 127.0.0.1 >nul 2>&1
    goto evaluate
    )

    echo If we get here, it's Friday

    call :set_current_hour
    if %hr% GTR 11 (
    echo The current time is already past 12:00 so we don't want to run the script today.
    echo You can exit the script with goto :eof or you can
    echo wait and retest
    ping -w 800 -n 39601 127.0.0.1 >nul 2>&1
    goto evaluate
    )

    :wait_for_noon

    echo If we're here, it's Friday and it's before noon so we need to watch for the changeover
    echo to noon and then run.

    call :set_current_hour
    if %hr%==12 goto what_to_actually_do

    echo it's not noon yet, wait 20 seconds and check again
    ping -w 800 -n 21 127.0.0.1 >nul 2>&1
    goto wait_for_noon
    goto :eof


    :what_to_actually_do
    echo We're here! It's noon on Friday.
    echo stick your commands here.


    echo When finished with the commands, you can exit with goto :eof
    echo or you can start all over again and wait for next week.
    ping -w 800 -n 39601 127.0.0.1 >nul 2>&1
    goto evaluate


    :set_current_day
    for /f "tokens=1-3 delims=/" %%a in ("%date%") do (
    set dd=%%b
    set mm=%%a
    set yy=20%%c
    )

    if 1%dd:~0,1%==10 set dd=%dd:~1,1%
    if 1%mm:~0,1%==10 set mm=%mm:~1,1%

    set Days=WedThuFriSatSunMonTue
    set /a z=14-mm,z/=12
    set /a jy=yy-z
    set /a jm=12*z+mm-3
    set /a mjd=153*jm+2,mjd/=5
    set /a mjd=mjd+dd+365*jy+jy/4-jy/100+jy/400-678882
    set /a "DoW=mjd%%7"
    set /a DoW*=3
    call set DoW=%%Days:~%DoW%,3%%
    goto :eof

    :set_current_hour
    for /f "tokens=1 delims=:" %%a in ("%time%") do set hr=%%a
    goto :eof
Amicalement

Laddy


Miracle ! Elle avait trouvé comment faire ce que je croyais impossible.

J'en parle à mon responsable: "J'ai trouvé (grâce à un contact) comment faire pour tout faire en batch, sans passer par un script intermédiaire en javascript. Basculer tout en batch serait plus logique, non ?"
Réponse de sa part: "Mouais en même temps le javascript est déjà écrit, donc autant l'utiliser."
...
J'eus alors de nouvelles envies de meurtre.



Donc au final, je m'en suis tenu à un simple xcopy, ainsi qu'il le souhaitait.
Voici au final mon script, lancé par le javascript une fois par semaine. Les accents passent mal ici, car j'ai voulu qu'ils soient visibles dans la fenêtre d'invite de commande, ce qui pose quelques soucis de compatibilité avec un éditeur de texte tel que celui utilisé sur un forum. J'y ai intégré la copie des archives Outlook dans un sous-répertoire caché.
@ echo off
color 0A

REM Message d"annonce
Echo Nous sommes mercredi, jour de la sauvegarde automatique de vos donn‚es.

REM Message d‚but pr‚ambule
Echo Contr“les pr‚alables en cours ...

REM V‚rification de la connexion depuis le site
IF EXIST \\serveur\%username%$ GOTO online ELSE GOTO offline >nul



:online

REM Mappage du lecteur perso si besoin
IF NOT EXIST U: net use U: \\serveur\%username%$ /persistent:yes >nul

REM Mappage du lecteur public si besoin
IF NOT EXIST P: net use P: \\serveur\commun /persistent:yes >nul

REM Cr‚ation du r‚pertoire de sauvegarde sur le client si besoin
IF NOT EXIST C:\"Documents and Settings"\%username%\"Mes documents"\"R‚pertoire synchronis‚" mkdir C:\"Documents and Settings"\%username%\"Mes documents"\"R‚pertoire synchronis‚" >nul

REM Cr‚ation des r‚pertoire de sauvegarde sur le serveur si besoin
IF NOT EXIST U:\"R‚pertoire synchronis‚" mkdir U:\"R‚pertoire synchronis‚" >nul
IF NOT EXIST U:\"R‚pertoire synchronis‚"\Outlook mkdir U:\"R‚pertoire synchronis‚"\Outlook >nul

REM Retirer les attributs sur le répertoire de sauvegarde Outlook
IF EXIST U:\"R‚pertoire synchronis‚"\Outlook ATTRIB -R -H U:\"R‚pertoire synchronis‚"\Outlook >nul 2>&1

REM Cr‚ation du raccourci bureau si besoin
IF NOT EXIST C:\"Documents and Settings"\%username%\bureau\"R‚pertoire synchronis‚.lnk" copy P:\informatique\"R‚pertoire synchronis‚.lnk" C:\"Documents and Settings"\%username%\bureau >nul

REM Message fin du pr‚ambule
Echo ... Fin des contr“les.

REM Inscription des dates et heures dans le fichier de log
date /t >>u:\"R‚pertoire synchronis‚"\%username%.log
time /t >>u:\"R‚pertoire synchronis‚"\%username%.log

REM Lancement de la copie
Echo Copie des donn‚es locales vers le serveur en cours ...
xcopy C:\"Documents and Settings"\%username%\"Mes documents"\"R‚pertoire synchronis‚" u:\"R‚pertoire synchronis‚" /d /e /c /i /g /h /f /k /y >>u:\"R‚pertoire synchronis‚"\%username%.log
xcopy c:\"Documents and Settings"\%username%\"Local Settings"\"Application Data"\Microsoft\Outlook\*.pst u:\"R‚pertoire synchronis‚\Outlook" /f /d /e /c /i /g /h /k /y >>u:\"R‚pertoire synchronis‚"\%username%.log

REM Cacher les fichiers de log et pst
ATTRIB +h u:\"R‚pertoire synchronis‚"\%username%.log >>u:\"R‚pertoire synchronis‚"\%username%.log
ATTRIB +R +H u:\"R‚pertoire synchronis‚"\Outlook >>u:\"R‚pertoire synchronis‚"\%username%.log

REM Fin de la copie
echo ... La copie est termin‚e.

GOTO end



:offline


REM Message fin du pr‚ambule
Echo ... Fin des contr“les.

REM Message non connexion au site
Echo Vous n'ˆtes pas connect‚ depuis votre bureau, la sauvegarde des donn‚es n'a pas eu lieu.

GOTO :end


:end

REM message de fin
Echo Merci d'avoir patient‚.
Echo (Mon chef est un con).

REM Laisser le temps de lire les r‚sultats … l'‚cran
sleep 5

Voilà, je crois avoir fini.

Merci à tous de m'avoir aidé, même si au final O-Eron se sera décarcassée pour rien. Je m'en excuse à nouveau platement.

Hors ligne O-ERON

  • travailleur fou
  • Super modérateur
  • Grand Maître
  • *****
  • Messages: 4782
  • Karma: 0
  • Sexe: Homme
    • Codeweaver
Re : Script de récupération de données
« Réponse #35 le: 09 mars 2009 à 09:44:21 »
pour le javascript il a raison
c'est un des langages supporté par Windows Scripting Host et peut donc être utilisé efficacement pour des scripts système
c'est une solution relativement classique

perso je déteste les batch et je trouve qu'au final ça tiens plus du bricolage et d'astuces que de quelque chose de solide
déjà un langage qui utilise des "goto" à tout bout de champs ça fait peur, très peur  :)

mais bon, ça tourne, ça fait ce que ça doit : pour l'instant c'est le principal  :P
[Sig removed by Admin: Total file size of all images in sig may not exceed 20 TB]

Hors ligne ferrari

  • Membre VIP
  • Grand Maître
  • *
  • Messages: 8161
  • Karma: 10
  • Sexe: Homme
Re : Script de récupération de données
« Réponse #36 le: 09 mars 2009 à 17:51:50 »
nous on utilise le jscript
tres simple d'utilisation et pratique
et occasionnellement du vbscript mais bon la je connais pas trop donc google est mon ami lol

Hors ligne pilou055

  • Apprenti(e)
  • **
  • Messages: 100
  • Karma: 0
  • Sexe: Homme
    • Soluce ADSL
Re : Script de récupération de données
« Réponse #37 le: 19 avril 2009 à 15:14:04 »
Bonjour

Le batch est la vieille programmation du dos, obsolescente depuis la fin des années 90.
Les JS : est la relève pour les administrateurs chez microsoft, de 98 à aujourd'hui
  en réalité c'est Wsh (windows shell)
  il accepte plusieurs langages et 2 sont fournit en standard, JS (JScript, distinct du java script) et VBS (VBScript)
  ces languages reprennent la syntaxe des java sript et VB, le moteur est commun à celui de IE depuis la v5 pour l'interprétation des java script mais y ajoute pour l'exécution en local d'API qui permettent aux admins de travailler (copies de fichiers, mappages, appels OLE, ...).
  Il n'est donc pas à confondre avec les javascript implémentés pour la gestion de pages web.
  A noter que js est redoutable pour la copie des fichiers en réseau, 10 fois plus rapide que les batch y compris pour de très gros fichiers.
  100% de ton batch est gérable en js et serait plus rapide et sur.
  quelques fonctions des API ne sont accessibles que depuis les vbs, pas depuis les js. une facon pour Microsoft de pousser ses langages mais les js restent très appréciés en admin.
PowerShell : la relève de Wsh (js et vbs)
  Pour concurrencer les shell unix. Il étend les API à l'ensemble des fonctions WMI.
  Ce moteur accepte plusieurs langages.
  Chaque implémentation des langages pour powershell incluent l'appel à ces API.
  La version de powershell pour vista est disponible depuis peu.
 
En bref, un seul js serait ta solution ultime.
Pour l'avenir, powershell deviendra indispensable pour les script d'administration. Tu devrais te pencher dessus en veille technologique ;)

@+

Hors ligne ferrari

  • Membre VIP
  • Grand Maître
  • *
  • Messages: 8161
  • Karma: 10
  • Sexe: Homme
Re : Script de récupération de données
« Réponse #38 le: 19 avril 2009 à 17:28:13 »
ouais les js sont sympa
faut que je me mette aussi a powershell mais bon pas trop eu le temps

Hors ligne O-ERON

  • travailleur fou
  • Super modérateur
  • Grand Maître
  • *****
  • Messages: 4782
  • Karma: 0
  • Sexe: Homme
    • Codeweaver
Re : Script de récupération de données
« Réponse #39 le: 19 avril 2009 à 19:01:53 »
yes !! une occasion de faire mon chipoteur, ça faisait longtemps  :lol: :lol:
wsh signifie plutôt windows script host et n'intègre de fait pas de shell
[Sig removed by Admin: Total file size of all images in sig may not exceed 20 TB]

Hors ligne Spip5

  • Grand Maître
  • *****
  • Messages: 1960
  • Karma: 1
  • Sexe: Homme
Re : Script de récupération de données
« Réponse #40 le: 19 avril 2009 à 23:32:28 »
En bref, un seul js serait ta solution ultime.
Pour l'avenir, powershell deviendra indispensable pour les script d'administration. Tu devrais te pencher dessus en veille technologique ;)
Pour revenir sur ce vieux fil, j'étais effectivement partant d'un "tout en langage unique", mais mon responsable d'alors ne l'avait pas entendu de cette oreille. Dans la mesure où il a réussi rapidement à faire ce qui m'était compliqué en batch, à savoir ne lancer le script qu'une fois par semaine, il m'aurait effectivement semblé logique qu'on continue avec son langage. Mais alors, ç'aurait été à lui de réfléchir un petit peu au script, ce qu'il n'était pas prêt à faire. Quand à moi, je me voyais mal apprendre sur le tas un langage complet, ce qui aurait dans tous les cas été infaisable comte tenu du temps qui m'étais imparti.

Citation de: O-eron
une occasion de faire mon chipoteur, ça faisait longtemps  Laughing Laughing
Ah oui, ça faisait longtemps tiens, ça nous manquait presque.

Hors ligne pilou055

  • Apprenti(e)
  • **
  • Messages: 100
  • Karma: 0
  • Sexe: Homme
    • Soluce ADSL
Re : Script de récupération de données
« Réponse #41 le: 20 avril 2009 à 18:06:49 »
En tout cas merci O-ERON pour la précision :)

L'idée de Microsoft était un serveur unique pour l'ensemble des langages de scripts, pas la partie shell.
serveur de sript + shell = powershell.

@Spip5
Si tu es amené à faire d'autres scripts d'administration, c'est incontournable.
ferrari doit pouvoir te transmettre quelques exemples de script qui couvrent toutes les fonctions utilisées dans ton batch. ;)

@+

Hors ligne O-ERON

  • travailleur fou
  • Super modérateur
  • Grand Maître
  • *****
  • Messages: 4782
  • Karma: 0
  • Sexe: Homme
    • Codeweaver
Re : Script de récupération de données
« Réponse #42 le: 20 avril 2009 à 18:35:47 »
yeap je confirme, le powershell cay le bien ;)
ça n'est pas si difficile à apprendre si tu as déjà des notions de programmation
de plus on commence à trouver beaucoup d'exemples sur le net
[Sig removed by Admin: Total file size of all images in sig may not exceed 20 TB]

Hors ligne ferrari

  • Membre VIP
  • Grand Maître
  • *
  • Messages: 8161
  • Karma: 10
  • Sexe: Homme
Re : Script de récupération de données
« Réponse #43 le: 20 avril 2009 à 20:37:56 »
j'espere pouvoir me mettre a powershell cet ete