IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Appeler à exécuter un 2ème script quand un 1er vient de finir de s'exécuter


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Appeler à exécuter un 2ème script quand un 1er vient de finir de s'exécuter
    Bonjour,

    Je suis novice en langage de programmation et m'y intéresse fortement depuis peu, surtout pour déployer manuellement des postes Windows configurés. J'ai comme projet de réaliser la mise en place d'une sauvegarde automatique sécurisée. Il s'agit de synchroniser tous les jours un répertoire clients Windows sur un serveur Linux distant tout en confirmant par l'envoi de mail, le bon ou mauvais déroulement de la tâche à exécuter.

    J'ai comme défis:
    - de ne pas utiliser le moindre outil de backup disponible sur le net afin d'exploiter WSL2 (le sous-système Linux for Windows), Powershell et le planificateur de tâches Windows.
    - de simplifier un maximum la mise en place de cette solution de sauvegarde, de sorte à ce qu'un Linuxien allergique à Windows puisse l'appliquer

    A ce jour, j'ai 3 scripts Powershell (si on peut appeler ça des scripts) que j'ai réalisé tant bien que mal mais qui fonctionne très bien. Il y a certainement moyen de tout compiler mais sans formation, je n'ai sans doute pas choisi la plus logique des façons de faire.
    - le 1er est une commande WSL + RSYNC qui lance la synchronisation d'un répertoire sur un serveur distant Linux par ssh et qui génère un fichier log.
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    wsl rsync -avzhP -e 'ssh -p [port]' --delete-after --stats --log-file=/mnt/c/Users/username/Logs/sauvegarde.log --log-file-format="% t \ n" /mnt/c/sauvegarde remoteuser@serveur:
    - le 2ème envoi un mail
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    # Adresse du serveur SMTP
        $SMTPServer = "smtp.quelquechose.com"
     
    # Expediteur
        $EmailFrom = "user@mail.com"
     
    # Destinataire
        $EmailTo = "user@mail.com"
     
    # Nom de la machine qui exécute ce script ## A NE PAS MODIFIER!!!
        $env:COMPUTERNAME
     
    # Sujet du mail
        $Subject = "Sauvegarde de votre ordinateur $($env:COMPUTERNAME)"
     
    # Chemin où se situe le fichier de log généré pendant la sauvegarde du script 1
        $PJ = 'C:\Users\username\Logs\sauvegarde.log'
     
    # Permet l'envoi de mail avec les accents
        $enc = New-Object System.Text.utf8encoding
     
    # Corps du message en HTML
        $CORPS_MAIL = 
    "
    L'exécution de votre sauvegarde s'est déroulée sans problème.
    <BR>
    <BR>
    <BR>
     
     
    ====================================================================================================<BR>
    <font size=3><u><B>Ceci est un message automatique. Merci de ne pas y répondre.</B></ol></u></font>
    "
     
    # Login d'authentification
        $User = "login ou adresse mail"
     
    # Mot de passe associé qui sera sécurisé
        $PWord = ConvertTo-SecureString –String "Password" –AsPlainText -Force
        $Credential = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $User, $PWord 
     
    # Appel de la commande qui envoi le mail pour informer du bon déroulement de la sauvegarde
    Send-MailMessage -SmtpServer $SMTPServer -BodyAsHtml $CORPS_MAIL -Encoding $enc -Port 587 -UseSsl -Credential $Credential -From $EmailFrom -To $EmailTo -Subject $Subject -Attachments $PJ
    - le 3ème est identique au 2ème sauf qu'il indique dans le corps du mail que la sauvegarde a échouée

    Ma question est:
    - Comment peut-on faire en sorte que le script 2 s'exécute si le script 1 se déroule sans problème ou que le script 3 s'exécute si le script 1 ne fonctionne pas? sachant que script1 sera à exécuter automatiquement tous les jours avec le planificateur de tâches.

    Je vous remercie d'avance pour votre précieuse aide.
    -

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Soit sur le retour de WSL ou RSYNC (je ne maitrise pas ces commandes).
    Et/ou par un système de flag ou vérification de l'intégrité de ta sauvegarde.


    de simplifier un maximum la mise en place de cette solution de sauvegarde, de sorte à ce qu'un Linuxien allergique à Windows puisse l'appliquer
    Tu as cas tout faire dans le "sous-système Linux for Windows" comme ça tu sera tranquille

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Effectivement je me suis orienté uniquement sur le sous système linux mais je n'avais pas trouvé le moyen d'exécuter un script.sh avec Powershell. La commande WSL exécute uniquement une commande linux et non un script.
    Ouff j'ai trouvé comment faire, il suffit d'utiliser bash.exe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bash.exe -c "cd /mnt/c/chemin du script && ./script.sh"
    Il ne me reste plus qu'à finaliser le script et planifier son exécution avec Windows.
    Merci de ta réponse.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/01/2018, 13h01
  2. double appel du script quand balise <img src vide
    Par zamanika dans le forum Langage
    Réponses: 8
    Dernier message: 16/11/2006, 12h21
  3. [iframe] [javascript] executer script quand iframe chargé
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/02/2006, 15h22
  4. Réponses: 4
    Dernier message: 03/11/2005, 12h14
  5. [langage] appel d'un second script
    Par matN59 dans le forum Langage
    Réponses: 3
    Dernier message: 07/01/2004, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo