Registrierung
leer
leer
newposts
Users
search
FAQ
Login
Start

Hallo Gast, und Willkommen im Forum. Sie müssen sich einloggen oder registrieren, um alle Funktionen nutzen zu können.


PN's Forum \ Computer \ Software \ Betriebssysteme \ Linux \ Bash + Plesk XML-API: Ausgeben von Speicherplatzüberschreitungen von Email-Konten


 Poison Nuke  *

#1 Verfasst am 30.03.2015, um 20:53:23



Hio,

wenn man Email-Konten auf einem Plesk-Server im Speicherplatz sanft begrenzen will ohne Quota zu nutzen (weil das in der Praxis nicht brauchbar ist), dann bietet die Plesk-API einen guten Weg, wenn man keinen Zugriff auf die Konsole des Servers hat, sondern das ganze nur ein Webhosting-Paket ist.


Man muss per curl bestimmte XML-Dateien an den Server senden, und bekommt dann ebenfalls per XML eine Antwort zurück.

Hier will ich das ganze an einem Beispiel zeigen, bei dem automatisch an die User eine Email geschickt wird, die zuviel Speicherplatz verbrauchen.



Zuerst benötigt man eine XML-Datei, die den eigentlichen Request stellt:

Quellcode
<?xml version="1.0" encoding="UTF-8" ?>
<packet>
 <mail>
  <get_info>
   <filter><site-id>xxx</site-id></filter>
   <mailbox />
   <mailbox-usage />
  </get_info>
 </mail>
</packet>



um die site-id zu erhalten, benötigt ihr diesen Request:

Quellcode
<?xml version="1.0" encoding="UTF-8" ?>
<packet>
<site>
    <get>
       <filter>
            <name>elbflorace.de</name>
       </filter>
       <dataset>
            <hosting/>
       </dataset>
    </get>
</site>
</packet>



jetzt kommt der interessante Part, um diese Requests an den Server zu senden, ist der folgende CURL Befehl nötig:


Quellcode
/usr/bin/curl -s -k https://HOSTNAME:8443/enterprise/control/agent.php -H "HTTP_AUTH_LOGIN: $USERNAME" -H "HTTP_AUTH_PASSWD: $PASSWORD" -H "HTTP_PRETTY_PRINT: true" -H "Content-Type: text/xml" -d "$(< yourPacket.xml)"



am Ende des Befehls kommt dann natürlich eine XML Datei heraus, die man weiterverarbeiten muss. Ich persönlich habe das ganze direkt mit einem Einzeiler gemacht, um aus der XML-Datei alle Speicherplatzüberschreitungen automatisch anzuschreiben:


Quellcode
/usr/bin/curl -s -k https://blubb.de:8443/enterprise/control/agent.php -H "HTTP_AUTH_LOGIN: webXXX" -H "HTTP_AUTH_PASSWD: mypassword" -H "HTTP_PRETTY_PRINT: true" -H "Content-Type: text/xml" -d "$(< /root/emailAccountsPleskAPI.xml)" | /usr/bin/grep '<name>|<usage>' | /usr/bin/sed 's/ *<[a-z]*>//g' | /usr/bin/sed 's/</usage>//g' | /usr/bin/sed ':a;N;$!ba;s/</name>n/ /g' | /usr/bin/awk '$2>104857600{system("/usr/bin/mail -s Speicherplatzueberschreitung_um_"int($2/1048576-100)"_MiByte "$1"@blubb.de < /root/emailAccountInfoText.txt")}'


Dieser Befehl sucht zuerst nach allen Zeilen mit den Tags name oder usage
dann werden die XML-Tags hinten und vorn entfernt, samt den Leerzeichen und bei jeder Zeile mit einem Namen wird auch noch das Line Feed entfernt.
Da kommt dann eine Liste raus, bei der immer zuerst die Emailadresse steht und mit einem Leerzeichen dahinter der Speicherverbrauch in Byte.
AWK nimmt das dann als Parameter entgegen, und prüft dann, ob der eine Wert größer als 100MiByte ist, wenn ja dann wird eine Email an den betreffenden User geschickt mit dem Text aus einer vorgegebenen Datei und der Speicherplatzüberschreitung in gerundeten MiByte.


greetz
Poison Nuke

bearbeitet von Poison Nuke, am 30.03.2015, um: 20:54:05

PN's Forum \ Computer \ Software \ Betriebssysteme \ Linux \ Bash + Plesk XML-API: Ausgeben von Speicherplatzüberschreitungen von Email-Konten


- Zurück zur Homepage - Eigene Beiträge - Neue Beiträge - Wer ist online? - Impressum - Datenschutz - Statistiken -



Board coded and provided by: Poison Nuke
Copyright 2007-2014, Robert Menger