Question
Script powershell sur linux via cronjob
- Jerôme
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 1
- Remerciements reçus 0
il y a 3 ans 5 mois - il y a 3 ans 5 mois #30173
par Jerôme
Script powershell sur linux via cronjob a été créé par Jerôme
Hello,
Je viens ici car j'ai un soucis avec mes script powershell sur linux.
J'ai un projet php (symfony) qui tourne sur un serveur ubuntu.
Ce projet gère entre autres des machines virtuelles sur Azure.
Pour automatiser certaines actions, j'ai crée des commandes linux qui exécutent des scripts powershell.
Lorsque j'exécute une commande dans la console de mon serveurtout fonctionne bien.
J'ai donc automatiser l'exécution de ces commandes avec CRON.
Or lorsqu'elles sont exécutés via cron, cela ne fonctionne pas...
Voici mon script qui permet d'éteindre une machine :
Lorsque la commandeest exécuté via cron, voici l'output.Il n'y a pas l'output des commandes permettant d'arrêter et démarrer les vm.
Lorsque c'est lancé directement dans la console :
Je précise que tout est bien lancé avec le même user.
D'avance merci si vous avez une idée parce que ca fait au moins deux semaines que je sèche
Je viens ici car j'ai un soucis avec mes script powershell sur linux.
J'ai un projet php (symfony) qui tourne sur un serveur ubuntu.
Ce projet gère entre autres des machines virtuelles sur Azure.
Pour automatiser certaines actions, j'ai crée des commandes linux qui exécutent des scripts powershell.
Lorsque j'exécute une commande dans la console de mon serveur
php bin/console azure:restart
J'ai donc automatiser l'exécution de ces commandes avec CRON.
Or lorsqu'elles sont exécutés via cron, cela ne fonctionne pas...
Voici mon script qui permet d'éteindre une machine :
$tenantId = "##########"
$userName = "########"
$password = ConvertTo-SecureString '##########' -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ($userName, $password);
Connect-AzAccount -ServicePrincipal -Credential $Credential -Tenant $tenantId
function StopVM($name)
{
write-host "Start : stop vm"
Stop-AzVM -ResourceGroupName "GROUP" -Name $name -Force
write-host "End : stop vm"
}
function StartVM($name)
{
write-host "Start : start vm"
Start-AzVM -ResourceGroupName "GROUP" -Name $name
write-host "End : start vm"
}
$global:name = $args[0]
StopVM($name)
Start-Sleep -Seconds 30
StartVM($name)
Lorsque la commande
php bin/console azure:restart
Start : stop vm
End : stop vm
Start : start vm
End : start vm
Lorsque c'est lancé directement dans la console :
Start : stop vm
Account SubscriptionName TenantId
------- ---------------- --------
### Abonnement Azure 1 ####
OperationId : ###
Status : Succeeded
StartTime : 11/10/2020 18:14:44
EndTime : 11/10/2020 18:15:35
Error :
Name :
End : stop vm
Start : start vm
OperationId : ####
Status : Succeeded
StartTime : 11/10/2020 18:16:05
EndTime : 11/10/2020 18:17:29
Error :
Name :
End : start vm
Je précise que tout est bien lancé avec le même user.
D'avance merci si vous avez une idée parce que ca fait au moins deux semaines que je sèche
Dernière édition: il y a 3 ans 5 mois par Jerôme.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 3 ans 5 mois #30187
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Script powershell sur linux via cronjob
Bonjour Jérôme,
Ton cas d'usage est très intéressant car pas très commun.
Je vois que tu utilises un argument dans ton script ($args[0]), qui d'après ce que je comprends est le nom de la machine que tu souhaites arrêter/démarrer.
Or je n'ai du mal à voir sur la ligne de commandes où est-ce que tu donnes le nom de la machine.
Est-ce "azure:restart" ? Ta VM s'appelle "azure" ?
Par ailleurs, tu devrais peut-être t'assurer que la commande "Connect-AzAccount" fonctionne bien avant d'exécuter la suite de ton script ?
Arnaud
Ton cas d'usage est très intéressant car pas très commun.
Je vois que tu utilises un argument dans ton script ($args[0]), qui d'après ce que je comprends est le nom de la machine que tu souhaites arrêter/démarrer.
Or je n'ai du mal à voir sur la ligne de commandes où est-ce que tu donnes le nom de la machine.
Est-ce "azure:restart" ? Ta VM s'appelle "azure" ?
Par ailleurs, tu devrais peut-être t'assurer que la commande "Connect-AzAccount" fonctionne bien avant d'exécuter la suite de ton script ?
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.066 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Script powershell sur linux via cronjob