Hallo Leute,
bin momentan dabei ein kleines Script zu schreiben, welches entsprechend des gewünschten WLANs eine woa_supplicant.conf erstellt, sodass sich auch ohne NetworkManager eine Verbindung in ein wpa-geschütztes WLAN herstellen läßt. Leider funktioniert die Ausführung des Scriptes nicht, es kommen folgende Fehler:
ZitatAlles anzeigenprint() on closed filehandle WPACONFIG at magic.pl line 91, <STDIN> line 4.
print() on closed filehandle WPACONFIG at magic.pl line 92, <STDIN> line 4.
print() on closed filehandle WPACONFIG at magic.pl line 93, <STDIN> line 4.
print() on closed filehandle WPACONFIG at magic.pl line 94, <STDIN> line 4.
print() on closed filehandle WPACONFIG at magic.pl line 95, <STDIN> line 4.
print() on closed filehandle WPACONFIG at magic.pl line 96, <STDIN> line 4.
print() on closed filehandle WPACONFIG at magic.pl line 97, <STDIN> line 4.
Use of uninitialized value $wlan_key in concatenation (.) or string at magic.pl line 98, <STDIN> line 4.
print() on closed filehandle WPACONFIG at magic.pl line 98, <STDIN> line 4.
print() on closed filehandle WPACONFIG at magic.pl line 99, <STDIN> line 4.
Initializing interface 'eth1-D' conf '/etc/conf.d/wpa_supplicant' driver 'default' ctrl_interface 'N/A' bridge 'N/A'
Configuration file '/etc/conf.d/wpa_supplicant' -> '/etc/conf.d/wpa_supplicant'
Reading configuration file '/etc/conf.d/wpa_supplicant'
Failed to read or parse configuration '/etc/conf.d/wpa_supplicant'.
Failed to add interface eth1-D
Cancelling scan request
Cancelling authentication timeout
Hier mal der Quelltext:
#!/usr/bin/perl -w
# MagicWLAN
# Autor: Alexander Feld <shadowing@fsfe.org>
system("clear");
print "Willkommen bei MagicWLAN!\n";
print "=========================\n\n";
if($> == 0 || $< == 0)
{ #UID prüfen
print "Dieses Tool wurde geschrieben, um bei der Verbindung mit WLAN-Netzen ohne Networkmanager zu helfen. Damit die Verbindung auch zu verschlüsselten WLANs klappt, muss wpa supplicant installiert sein.\n\n";
print "Bitte halte ein paar Informationen bereit, damit dieses Tool seinen Dienst verrichten kann:\n";
print "- Name deines WLAN-Interfaces (in der Regel wlan0 oder eth1)\n";
print "- SSID deines WLANs\n";
print "- Verwendete Verschlüsselung (Keine / WEP / WPA / WPA2)\n";
print "- (falls verschlüsselt) den notwendigen Key\n\n";
print "Wollen wir beginnen? (J/N) ";
$antwort=<STDIN>;
chomp($antwort);
print "\n";
if($antwort eq "J" || $antwort eq "j")
{
print "\n\n";
print "Alles klar, dann wollen wir mal!\n";
print "Welches Interface wird für WLAN verwendet?\t";
$wlan_dev=<STDIN>;
chomp($wlan_dev);
print "\nWie lautet die SSID deines WLANs?\t";
$wlan_ssid=<STDIN>;
chomp($wlan_ssid);
print "\n\nWelche Verschlüsselung wird verwendet?\n";
print "a\t Keine\n";
print "b\t WEP\n";
print "c\t WPA Personal\n";
print "d\t WPA2 Personal\n\n";
$wlan_crypt=<STDIN>;
chomp($wlan_crypt);
unless($wlan_crypt eq "a")
{
print "Wie lautet der Key?\t";
$wlan_key=<STDIN>;
chomp($wlan_key);
};
system("ifconfig ".$wlan_dev." up");
if($wlan_crypt eq "a")
{ # Unverschlüsselt
system("iwconfig ".$wlan_dev." essid ".$wlan_ssid);
}
elsif($wlan_crypt eq "b")
{ # WEP
open(WPACONFIG, ">/etc/conf.d/wpa_supplicant");
print WPACONFIG "network={\n";
print WPACONFIG "ssid=\"".$wlan_ssid."\"\n";
print WPACONFIG "scan_ssid=1\n";
print WPACONFIG "key_mgmt=NONE\n";
print WPACONFIg "wep_tx_keyidx=0\n";
print WPACONFIG "wep_key0=\"".$wlan_key."\"\n";
print WPACONFIG "}\n";
close(WPACONFIG);
system("sudo wpa_supplicant -i ".$wlan_dev."-D wext -c /etc/conf.d/wpa_supplicant -d");
}
elsif($wlan_crypt eq "c")
{ # WPA1
open(WPACONFIG, ">/etc/conf.d/wpa_supplicant");
print WPACONFIG "network={\n";
print WPACONFIG "ssid=\"".$wlan_ssid."\"\n";
print WPACONFIG "scan_ssid=1\n";
print WPACONFIG "proto=WPA\n";
print WPACONFIG "key_mgmt=WPA-PSK\n";
print WPACONFIG "pairwise=TKIP\n";
print WPACONFIG "group=TKIP\n";
print WPACONFIG "psk=\"".$wlan_key."\"\n";
print WPACONFIG "}\n";
close(WPACONFIG);
system("sudo wpa_supplicant -i ".$wlan_dev."-D wext -c /etc/conf.d/wpa_supplicant -d");
}
elsif($wlan_crypt eq "d")
{ # WPA2
open(WPACONFIG, ">/etc/conf.d/wpa_supplicant");
print WPACONFIG "network={\n";
print WPACONFIG "ssid=\"".$wlan_ssid."\"\n";
print WPACONFIG "scan_ssid=1\n";
print WPACONFIG "proto=RSN\n";
print WPACONFIG "key_mgmt=WPA-PSK\n";
print WPACONFIG "pairwise=CCMP\n";
print WPACONFIG "group=TKIP\n";
print WPACONFIG "psk=\"".$wlan_key."\"\n";
print WPACONFIG "}\n";
close(WPACONFIG);
system("sudo wpa_supplicant -i ".$wlan_dev."-D wext -c /etc/conf.d/wpa_supplicant -d");
};
print "\n\nSoll die Verbindung bei jedem Bootvorgang hergestellt werden? (J/N)\t";
$jederstart=<STDIN>;
chomp($jederstart);
if($jederstart eq "J" || $jederstart eq "j")
{
open(RCLOCAL, ">>/etc/rc.local");
if($wlan_crypt eq "a")
{
print RCLOCAL "sudo wpa_supplicant -i ".$wlan_dev."-D wext -c /etc/conf.d/wpa_supplicant -d";
}
else
{
print RCLOCAL "iwconfig ".$wlan_dev." essid ".$wlan_ssid;
};
close(RCLOCAL);
};
};
}
else
{
die("Dieses Programm muss als root ausgeführt werden\n\n");
};
Alles anzeigen
Hat hier zufällig jemand eine Idee, was da nicht stimmt?
Schöne Grüße
mrshadowtux