Der PikkuBot kann Avatare, Prims, Sims und Sandboxen protokollieren. Das geht einerseits über den Befehl “getfile” in die Datei logfile/HUNTER.txt oder über den Befehl “geturl” und einen Webserver. Letzteres ist natürlich viel viel schöner in der späteren Auswertung und soll deshalb hier jetzt Thema sein. Letztendlich kann man das Server-Skript in jeder beliebigen Web-Sprache programmieren, hier im Beispiel wird PHP und MySQL verwendet.
Datenbank mit MySQL und ein Webserver mit PHP.
Am besten über das Hilfsprogramm phpMyAdmin wird eine neue Datenbank angelegt, in unserem Beispiel nennen wir die Datenbank pikkubot.
So könnte ein Datenbank-Schema für Avatare aussehen:
CREATE TABLE `pikkubot_avs` (
`pikkubot_avs_id` int(11) NOT NULL auto_increment,
`pikkubot_avs_datum` datetime NOT NULL default '0000-00-00 00:00:00',
`pikkubot_avs_lastseen` datetime NOT NULL default '0000-00-00 00:00:00',
`pikkubot_avs_name` text NOT NULL,
`pikkubot_avs_key` text NOT NULL,
`pikkubot_avs_sim` text NOT NULL,
`pikkubot_avs_vector` text NOT NULL,
`pikkubot_avs_hash` varchar(32) NOT NULL default '',
PRIMARY KEY (`pikkubot_avs_id`),
KEY `pikkubot_avs_hash` (`pikkubot_avs_hash`)
) ENGINE=MyISAM;
Wir brauchen ein Skript zum Loggen der Daten vom Bot in die Datenbank, wir nennen es log.php:
<?php
// Verbindung mit der Datenbank
//
$link=mysql_connect("localhost","BENUTZERNAME","KENNWORT");
mysql_select_db("pikkubot");
// Der Bot schickt mir einen Avatar
//
if ($_GET[av_name]!="") {
// Ist der Avatar schon in der Datenbank?
//
$select=mysql_query("SELECT count(*) FROM pikkubot_avs WHERE pikkubot_avs_hash='".md5($_GET[av_name])."'");
$row=mysql_fetch_array($select);
// Nein
//
if ($row[0]==0) {
$insert=mysql_query("
INSERT INTO pikkubot_avs
(pikkubot_avs_datum, pikkubot_avs_lastseen, pikkubot_avs_key, pikkubot_avs_name, pikkubot_avs_sim, pikkubot_avs_vector, pikkubot_avs_hash)
VALUES
('".date("Y-m-d H:i:s")."', '".date("Y-m-d H:i:s")."', '$_GET[av_key]', '$_GET[av_name]', '$_GET[av_sim]', '$_GET[av_position]', '".md5($_GET[av_name])."')
");
}
else
{
$update=mysql_query("
UPDATE pikkubot_avs
SET pikkubot_avs_lastseen='".date("Y-m-d H:i:s")."'
WHERE pikkubot_avs_hash='".md5($_GET[av_name])."'
");
}
}
?>
Bitte BENUTZERNAME mit dem MySQL-Datenbank-Benutzer ersetzen (z.B. root) und KENNWORT mit dem dazugehörigen Kennwort ersetzen.
Jetzt einfach beim Bot folgenden Befehl eingeben:
geturl http://MEIN_WEBSERVER/log.php
Jetzt sollte der Bot, die Avatare, die er neu sieht in die Datenbank loggen. Das bitte mit phpMyAdmin kontrollieren.
Dann fehlt eigentlich nur noch ein kleines Skript, um die geloggten Avatare anzuzeigen, wir nennen es hunted.php:
<?php
// Verbindung mit der Datenbank
//
$link=mysql_connect("localhost","BENUTZERNAME","KENNWORT");
mysql_select_db("pikkubot");
$select=mysql_query("select * FROM pikkubot_avs ");
echo "I have found ".mysql_num_rows($select)." Avatars in database.<br><br>";
$select=mysql_query("
select * FROM pikkubot_avs
ORDER BY pikkubot_avs_lastseen DESC
LIMIT 0,50
");
if (mysql_num_rows($select)>0 ) {
echo "<b>Last 50 seen Avatars :</b><br><br>";
echo "<table>";
echo "<tr>";
echo "<td><b>First-Seen</strong></td>";
echo "<td><b>Last-Seen</strong></td>";
echo "<td><b>Avatar-Name</strong></td>";
echo "<td><b>Avatar-Key</strong></td>";
echo "<td><b>Avatar-Sim</strong></td>";
echo "<td><b>Avatar-Vector</strong></td>";
echo "</tr>";
for ($a=0; $a<mysql_num_rows($select); $a++) {
$row=mysql_fetch_array($select);
echo "<tr>";
echo "<td>$row[pikkubot_avs_datum]</strong></td>";
echo "<td>$row[pikkubot_avs_lastseen]</strong></td>";
echo "<td>$row[pikkubot_avs_name]</strong></td>";
echo "<td>$row[pikkubot_avs_key]</strong></td>";
echo "<td>$row[pikkubot_avs_sim]</strong></td>";
echo "<td>$row[pikkubot_avs_vector]</strong></td>";
echo "</tr>";
}
echo "</table>";
}
else
{
echo "... Sorry, no Avatars seen yet ...<br>";
}
?>
Fertig!
Die Skripte können natürlich noch beliebig erweitert/verschönert werden!
Siehe auch: Erweiterung der Datei log.php für Prims