Home


Netmeeting, Perl und andere Verbindungen

Der Link "Netmeeting-Anruf" bietet die Möglichkeit, mit mir Kontakt aufzunehmen. Vorausgesetzt ich bin online und Du hast Netmeeting installiert (ab Internet Explorer Version 5 standardmäßig dabei, ansonsten hier zu finden.
Bitte zur Zeit nur von der Chat- und Dateiübertragungsmöglichkeit Gebrauch machen. Mehr gibt mein Modem nicht her :(
Das Problem, die dynamische IP-Adresse per Link anbieten zu können, sowie zu informieren, ob ich online/offline bin, habe ich mit Hilfe eines kleinen Perlskripts realisiert.
Skriptablauf:
-Verbindungsaufbau-
Netmeeting starten
Providereinwahl
aktuelle IP-Adresse für Netmeeting (callto-Link) ermitteln
Statusdatei-bin_online (wird per SSI in Startseite eingebaut) schreiben
Statusdatei per FTP zum Webserver schicken
-Verbindungsabbau-
Netmeeting beenden
Statusdatei-bin_offline schreiben
Statusdatei per FTP zum Webserver schicken
(Internetverbindung muß per Hand getrennet werden!)

#****************************************
# Uploadscript fuer Netmeeting-Link
# by Christian Brenner 11/2002
#****************************************


use Net::FTP;
use Win32::Process;

$dir = "/xxx"; #FTP-Verzeichnis
$host = "xxx"; #FTP-Host
$login = "xxx"; #Login-Name
$pass = "xxx"; #Passwort

$datei = "binonline.txt"; #Dateiname
$hostname = "xxx"; #Name des Rechners
$nm_pfad = "C:\\Programme\\NetMeeting\\Conf.exe"; #Pfad zu Netmeeting
$timeout = 60; #Wartezeit fuer Providereinwahl
$providername = "xxx" #Name der Providerverbindung

#Abfrage Programmstart
print "Verbindung aufbauen? [j/n]";
$abfrage=<STDIN>;
chomp ($abfrage);
if ($abfrage eq "j") { einwahl(); }
elsif ($abfrage eq "n") { print "bye\n"; exit 0; }
else { usage();}


############################

sub usage {
print "Verwendung: j oder n eingeben";
exit 0;
}

sub einwahl() {
#Netmeeting starten
Win32::Process::Create($process_nm, $nm_pfad, $nm_pfad, 0
, DETACHED_PROCESS, ".") || die "Konnte Netmeeting nicht starten";
print "Netmeeting gestartet\n";
$process_nm->Win32::Process::GetExitCode($ref);

#Providereinwahl starten
Win32::Process::Create($process_prov,"C:\\Windows\\Rundll32.exe" ,
"C:\\Windows\\Rundll32.exe rnaui.dll,RnaDial $providername", 0
, DETACHED_PROCESS, ".") || die "Konnte Einwahl nicht ausfuehren";
sleep($timeout);#Pause bis Verbindung hergestellt ist
print "Internetverbindung hergestellt\n";

#aktuelle IP Adresse
$ip=(gethostbyname($hostname))[5];
$ip_var = join(".",unpack("C4",$ip));
$status = "<p>Ich bin online. <a href=\"callto: $ip_var\">Hier klicken
für Netmeeting-Anruf</a></p>";

#Datei schreiben
open (UPDATEI, ">$datei") || die "Konnte $datei nicht oeffnen";
print UPDATEI $status;
close UPDATEI || die "Konnte $datei nicht schliessen";

#FTP starten - Bin online
dateiupload();

print "Verbindung abbauen? [j/n] \(\"n\" beendet Perlskript\)";
$abfrage=<STDIN>;
chomp ($abfrage);
if ($abfrage eq "j") { trennen(); }
elsif ($abfrage eq "n") { print "bye"; exit 0; }
else { usage();}
}

sub trennen() {
$process_nm->Win32::Process::Kill($ref)
|| die "Konnte Netmeeting nicht beenden";
print "Netmeeting beendet\n";

$status = "<p>Bin leider zur Zeit offline. Netmeeting-Anruf nicht möglich.</p>";
#Datei schreiben
open (UPDATEI, ">$datei") || die "Konnte $datei nicht oeffnen";
print UPDATEI $status;
close UPDATEI || die "Konnte $datei nicht schliessen";

#FTP starten - Bin offline
dateiupload();

#Internetverbindung von Hand trennen!
print "bye";
exit 0;
}

sub dateiupload {
$ftp = Net::FTP->new($host, Timeout => 60)
|| die "Keine Verbindung zu: $host";
$ftp->login($login, $pass) || die "Login fehlgeschlagen";
$ftp->cwd($dir) || die "Verzeichnis $dir existiert nicht";
$ftp->put("binonline.txt", "binonline.txt")
|| die "Transfer fehlgeschlagen";
$ftp->quit();
print "FTP-Vorgang ausgefuehrt\n";
}



Home


www.ch-brenner-web.de
eMail: christian@ch-brenner-web.de