Hallo Zusammen,
wie kann man prüfen ob ein Plugin funktioniert?
gruß
Jürgen
wie kann man prüfen ob ein Plugin funktioniert?
gruß
Jürgen
#Code-Teil I # #mach irgendwas aus irgend einem Grund mit $variabe1 # # plugin_log($plugname,"Ja ich bin bis hierher gekommen, das vorläufige Ergebnis ist $variabel1"); # #Code Teil II # #jetzt mache folgendes mit $variabel1 und das Ergebnis ist $variabel2 # # plugin_log($plugname,"Auch der Schritt ist richtig. Ergebnis: $variabel2"); # #u.s.w. #
):# Plugin um ein Netzwerkgerät per Wake On LAN (WOL) aufzuwecken und per ssh/telnet auszuschalten
#
# Copyright of original wol part:
# Perl version by ken.yap@acm.org after DOS/Windows C version posted by
# Steve_Marfisi@3com.com on the Netboot mailing list
# Released under GNU Public License, 2000-01-05
#
# Hinweise zur Einrichtung von Wake On LAN unter Ubuntu gibt es hier:
# http://wiki.ubuntuusers.de/Wake_on_LAN
#
# Folgende Paket unter Update installieren (nur wenn ssh genutzt werden soll):
# sshpass
#
# Achtung:
# --------
# sshpass ist sehr unsicher, da das Passwort im Klartext hier im Plugin steht
# und unverschlüsselt an ssh übergeben wird.
#
### Definitionen
my $switch_ga = "9/2/0"; # Gruppenadresse die einen PC wecken oder ausschalten soll
my $mac_address = "00:25:22:49:64:71"; # MAC-Adresse des PCs
my $ip_address = "192.168.10.21"; # IP-Adrssse des PCs
my $user = "Administrator"; # Benutzername für ssh/telnet login
my $password = "Mirko86!"; # Passwort des Benutzers
my $remote_method = "telnet"; # Methode zum Login entweder "ssh" oder "telnet" (Groß- und Kleinschreibung beachten!)
my $remote_command = "shutdown /r"; # Befehl zum Ausschalten oder "schlafen legen" des PCs, z. B.
# - Ausschalten: "shutdown -h now" (Default)
# - Suspend-to-RAM (S3): "pm-suspend"
# - Suspend-to-disk (S4): "pm-hibernate"
# Weitere Informationen für Ubuntu: http://wiki.ubuntuusers.de/pm-utils
# Um die Befehle von allen Benutzern ohne Administratorrechte auszuführen
# folgende Zeilen auf dem Ziel-PC eingeben (für Ubuntu, bei anderen Distris den Pfad ggf. anpassen):
# sudo chmod u+s /sbin/shutdown
# sudo chmod u+s /usr/sbin/pm-*
### Ende Definitionen
use Getopt::Std;
use Socket;
use Net::Telnet;
# Plugin an Gruppenadresse "anmelden"
$plugin_subscribe{$switch_ga}{$plugname} = 1;
# Eigenen Aufruf-Zyklus auf 3 Stunden setzen
# der Aufrufzyklus ist unabhängig von der Taktzeit und muss kürzer sein!
$plugin_info{$plugname.'_cycle'} = 10800;
if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $switch_ga) {
#Wert vom Bus
if (defined $msg{'value'}) {
if ( $msg{'value'} == "1" ) {
my $return_value = send_broadcast_packet($mac_address);
return "WOL ".$return_value." an ".$mac_address;
} else {
my $return_value = remote_login();
return "Ausschaltbefahl an ".$ip_address." ".$return_value;
}
}
}
return;
sub send_broadcast_packet {
(my $mac) = @_;
if ($mac !~ /[\da-f]{2}:[\da-f]{2}:[\da-f]{2}:[\da-f]{2}:[\da-f]{2}:[\da-f]{2}/i) {
return "Fehlerhafte MAC-Adresse $mac\n";
}
print "Sende WOL-Paket an MAC-Adresse $mac\n";
# Remove colons
$mac =~ tr/://d;
# Magic packet is 6 bytes of FF followed by the MAC address 16 times
my $magic = ("\xff" x 6) . (pack('H12', $mac) x 16);
# Create socket
socket(S, PF_INET, SOCK_DGRAM, getprotobyname('udp'))
or return "Fehler im Socket: $!\n";
# Enable broadcast
setsockopt(S, SOL_SOCKET, SO_BROADCAST, 1)
or return "Fehler bei Setsockopt: $!\n";
# Send the wakeup packet
defined(send(S, $magic, 0, sockaddr_in(0x2fff, INADDR_BROADCAST)))
or print "Sende: $!\n";
close(S);
return "Magic Packet gesendet";
}
sub remote_login {
my $command;
if ( $remote_method eq "telnet" ) {
# Telnet
my $telnet = Net::Telnet->new($ip_address);
$telnet->login($user,$password);
my @lines = $telnet->cmd("$remote_command");
} else {
# SSH
$command = "sshpass -p $password ssh $user"."@".$ip_address.' "'.$remote_command.'"';
my $status = system($command);
}
return "gesendet";
}

.sub remote_login {
my $command;
if ( $remote_method eq "telnet" ) {
# Telnet
my $telnet = Net::Telnet->new($ip_address);
$telnet->login($user,$password);
my @lines = $telnet->cmd("$remote_command");
} else {
# SSH
$command = "sshpass -p $password ssh $user"."@".$ip_address.' "'.$remote_command.'"';
my $status = system($command);
}
return "gesendet";
$telnet->login($user,$password);
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.


Kommentar