So könnten wir das Beispiel aus „Beispiel: Anzahl der Mailbox-Nachrichten mit Expect abfragen“ in PHP mit der StarAstAPI lösen:
#!/usr/bin/php -q <?php # der Parameter -q dient dazu, bei einem CGI-PHP die Ausgabe der # Header abzuschalten if ($argc != 2) { echo "Fehler: Geben Sie eine Mailbox an!\n"; exit(1); } # das erste Argument nach dem Programmnamen ist die Mailbox: $mailbox = $argv[1]; echo "Mailbox: $mailbox\n\n"; # StarAstAPI einbinden: require_once './StarAstAPI/StarAstAPI.php'; # verbinden und einloggen: # $ami = new AstClientConnection(); if ($ami->Login( 'admin', 'geheim', '127.0.0.1', 5038 )) { $rp = $ami->GetResponse('1'); //echo $rp->ToString(); } else { exit(1); } # folgendes Paket senden: # Action: MailboxCount # Mailbox: $mailbox # ActionID: 2 # $data = new AstPacketData; $data->AddKVPair( 'Action' , 'MailboxCount' ); $data->AddKVPair( 'Mailbox' , $mailbox ); $data->AddKVPair( 'ActionID', '2' ); $packet = new AstPacket; $packet->SetAstPacketType( 'Action' ); $packet->SetAstPacketData( $data ); $ami->SendPacket( $packet ); # Antwort-Paket mit ActionID 2 lesen: # $rPacket = $ami->GetResponse('2'); //echo $rp->ToString(); $rData = $rPacket->GetAstPacketData(); $r = $rData->GetAll(); echo "Neue Nachrichten: ", (int)trim($r['NewMessages:']), "\n"; echo "Alte Nachrichten: ", (int)trim($r['OldMessages:']), "\n"; echo "\n"; # Ausloggen - nicht unbedingt nötig, aber sauber: # $ami->Logoff(); # allerdings ist die Funktion der StarAstAPI nicht gerade schön. # sie tut dies: #echo "Logoff Called from somewhere ..."; #socket_close($this->mSocket); echo "\n"; ?>
Wir speichern das Skript als
vmcount.php
und setzen es mit chmod a+x
vmcount.exp auf ausführbar.
Aufruf:
$ ./vmcount.php 123@default Mailbox: 123123123 Neue Nachrichten: 0 Alte Nachrichten: 0 Logoff Called from somewhere ...