Et là vous vous dites certainement WTF ! Car et oui il peut paraitre étrange d'utiliser powershell sous Linux ! Et pourtant cela fonctionne très bien !
On trouve facilement la doc Microsoft qui indique comment installer powershell sur Linux et vous devriez tomber sur https://learn.microsoft.com/fr-fr/powershell/scripting/install/install-powershell-on-linux?view=powershell-7.5
Suivant votre distrib vous trouverez un lien spécifique. Par exemple pour une base RedHat c'est
https://learn.microsoft.com/fr-fr/powershell/scripting/install/install-rhel?view=powershell-7.5
où on trouve par exemple un script qui s'occupe d'installer le bon package suivant la version de l'OS via dnf.
Pour la suite l'idée est de faire un script mail-pwsh.sh qui s'occupera d'appeler powershell avec les différents paramètres. Pour cela faire
nano /data/mail-pwsh.sh
Lien vers le fichier : cliquez ici
Pour le contenu mettre
pwsh /data/mail-pwsh.cod -fromaddress $1 -toaddress $2 -Subject "$3" -body "$4" -attachment $5
Lien vers le fichier : cliquez ici
pwsh est la version PowerShell multiplateforme et open-source de PowerShell qui fonctionne sur Linux, macOS et Windows.
/data/mail-pwsh.cod c'est le script powershell à proprement parler.
$1, $2, $3 etc ... correspond aux variables qui seront passées en paramètres au script mail-pwsh.sh
On va le créer le script powershell /data/mail-pwsh.cod avec
nano /data/mail-pwsh.cod
Lien vers le fichier : cliquez ici
Y coller et adapter le script powershell dont le login et mot de passe cad
param(
[string]$fromaddress = "robert@mondomaine.com",
[string]$toaddress = "gerard@mondomaine.com",
[string]$Subject = "Test",
[string]$body = "Test",
[string]$attachment = "/data/mail-pwsh.cod"
)
$smtpserver = "smtps.mondomaine.com"
Clear-Host
write-host $fromaddress
$arraytoaddress = $toaddress.split(";")
$arrayattachment = $attachment.split(";")
write-host $toaddress
write-host "Sujet : $subject"
write-host $body
write-host $attachment
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$PasswordForCredential = ConvertTo-SecureString "lemotdepasse" -AsPlainText -Force
$Credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "lelogin",$PasswordForCredential
Send-MailMessage -From $fromaddress -To $arraytoaddress -Subject $Subject -BodyAsHtml $body -Attachments $arrayattachment -SmtpServer $smtpserver -Credential $Credentials -Encoding default -UseSsl -Port 587
Lien vers le fichier : cliquez ici
On peut maintenant appeler le script avec ses paramètres.
On remarquera qu'on peut attacher plusieurs pièces jointes.
Exemple :
/data/mail-pwsh.sh sender@mondomaine.com "recipient1@mondomaine.com;recipient2@mondomaine.com" "Test sujet 1" 'Un Body test</br>test' "/data/mail-pwsh.cod;/data/mail-pwsh.sh"
Lien vers le fichier : cliquez ici
Article(s) en relation(s)