Hi,
ich schriebe mir gerade ein Script, was die eingeloggten User überprüft.
1: Frage ab, wer an der Maschine grad eingeloggt ist (who)
2: Ermittle IP Adresse
3: Ermittle IP Adresse von einer Dyndns adresse
4: Vergleiche beide IP Adressen und schicke Mail falls IP Adressen abweichend sind.
So: Prinzipell habe ich das Script fertig und es läuft.
Leider wird nur der letzte User der sich eingeloggt hat berücksichtigt. Also nicht alle, die am System angemeldet sind.
Also habe ich das Script ein bissel umgeschrieben und die Daten, die von who geliefert werden in ein array gepackt.
Da ich mich mit Schleifen immer noch sehr sehr schwer tute muß ich jetzt mal um Hilfe bitten.
Hier auszugsweise das Script:
var_dump + echo Ausgaben:
Ich müsste jetzt erstmal $last_login einzeln per shell_exec an ping übergeben (natürlich mit den head/awk/cut-Befehl um nur die IP-addy zurück zu erhalten). Den Output von shell_exec müsste dann wieder zurück in ein array geschrieben werden, den ich dann später mit $dyndns vergleichen kann.
Der Ablauf ist somit klar... nur bei der while Schleifen Umsetzung haperts
Danke
ich schriebe mir gerade ein Script, was die eingeloggten User überprüft.
1: Frage ab, wer an der Maschine grad eingeloggt ist (who)
2: Ermittle IP Adresse
3: Ermittle IP Adresse von einer Dyndns adresse
4: Vergleiche beide IP Adressen und schicke Mail falls IP Adressen abweichend sind.
So: Prinzipell habe ich das Script fertig und es läuft.
Leider wird nur der letzte User der sich eingeloggt hat berücksichtigt. Also nicht alle, die am System angemeldet sind.
Also habe ich das Script ein bissel umgeschrieben und die Daten, die von who geliefert werden in ein array gepackt.
Da ich mich mit Schleifen immer noch sehr sehr schwer tute muß ich jetzt mal um Hilfe bitten.
Hier auszugsweise das Script:
PHP-Code:
#!/usr/bin/php -q
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$last_login = array(shell_exec("who | cut -d ')' -f 1 - | cut -d '(' -f 2 -"));
var_dump($last_login);
$dyndns = shell_exec("ping -c1 xxxx.dyndns.org | head -2 -n1 | awk '{print $3}' | cut -d ')' -f 1 - | cut -d '(' -f 2 -");
echo $dyndns;
Code:
array(1) { [0]=> string(80) "dslb-094-xxx-007-034.pools.arcor-ip.net dslb-094-xxx-007-034.pools.arcor-ip.net " } 94.xxx.7.34
Der Ablauf ist somit klar... nur bei der while Schleifen Umsetzung haperts
Danke
Kommentar