Perl Scripting routen
Hallo,
ich habe Probleme mit einem Perl Script.
Anmerken muss ich, dass ich sehr unerfahren mit Perl bin.
Auf einem Ubuntu Server läuft das script (bis auf kleine Änderungen in der letzten Zeile) fehlerfrei.
Auf einem CentOS 5.11 Server läuft es nicht.
Hintergrund:
Immer wenn eine ppp verbindung zu stande kommt, soll das Script ausführen und eine route setzen, dass der Traffic in dem Netzbereich der pppX Schnittstelle über diese geht.
also route add -net 192.168.0.0/26 dev ppp0 zum Beispiel.
Da die pppX unterschiedlich ist und unterschiedlichste IP-Bereiche verwendet werden muss das sehr variable geschrieben sein.
Anbei das Script:
Kann mir da einer von euch helfen? Wäre super. Komme nicht mehr weiter...
Vielen Dank.
Liebe Grüße
ich habe Probleme mit einem Perl Script.
Anmerken muss ich, dass ich sehr unerfahren mit Perl bin.
Auf einem Ubuntu Server läuft das script (bis auf kleine Änderungen in der letzten Zeile) fehlerfrei.
Auf einem CentOS 5.11 Server läuft es nicht.
Hintergrund:
Immer wenn eine ppp verbindung zu stande kommt, soll das Script ausführen und eine route setzen, dass der Traffic in dem Netzbereich der pppX Schnittstelle über diese geht.
also route add -net 192.168.0.0/26 dev ppp0 zum Beispiel.
Da die pppX unterschiedlich ist und unterschiedlichste IP-Bereiche verwendet werden muss das sehr variable geschrieben sein.
Anbei das Script:
#!/usr/bin/perl
$device = $ARGV or die;
$remip = $ARGV[4] or die;
$device =~ /^ppp(\d+)$/ or die;
($network,$ip) = $remip =~ /^192\.168\.(\d+)\.(\d+)$/ or die;
$ip = $ip - 1;
$network = "192.168.$network.$ip/26";
system( "/sbin/route add -net $network dev $device" );
Wenn ich /sbin/ifup-DIESES_SCRIPT ppp0 ausführe sagt er mir folgendes:
/sbin/ifup-DIESES_SCRIPT ppp0
Died at /sbin/ifup-surfsitter line 3.
Automatisch gestartet wird das Script über die /etc/sysconfig/network-scripts/ifup-ppp
mit folgenden Zeilen:
if [ -x /sbin/ifup-DIESES_SCRIPT ]; then
/sbin/ifup-DIESES_SCRIPT ${DEVICE}
fi
Vielen Dank.
Liebe Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 266832
Url: https://administrator.de/contentid/266832
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
13 Kommentare
Neuester Kommentar
Moin,
Nachdem Du das Skript mit nur einem Parameter aufrufst, tut es genau das was es soll, nämoich in Zeile 3 sterben.
Wenn Du das Skript debuggen willst, würde ich einfach die übergebenen Parameter in eine Logdatei, z.B. /var/log/DIESES-SKRIPT.log, schreiben udn mal nachschauen, mit welchen Parametern das Skript vom System aufgerufen wird.
lks
Nachdem Du das Skript mit nur einem Parameter aufrufst, tut es genau das was es soll, nämoich in Zeile 3 sterben.
Wenn Du das Skript debuggen willst, würde ich einfach die übergebenen Parameter in eine Logdatei, z.B. /var/log/DIESES-SKRIPT.log, schreiben udn mal nachschauen, mit welchen Parametern das Skript vom System aufgerufen wird.
lks
Die Nummerrierung ist "off-by-one"
Aber normalerweise ruft man die up-down-skripten nich tdirekt auf, sondern packt sie in den ordner /etc/ppp/ip-up.d bzw. /etc/ppp/ip-down.d
Dort werden sie dann vom System aufgerufen mudn haben folgende Parameter:
- $1 the interface name used by pppd (e.g. ppp3)
- $2 the tty device name
- $3 the tty device speed
- $4 the local IP address for the interface
- $5 the remote IP address
- $6 the parameter specified by the 'ipparam' option to pppd
lks
Zitat von @SlainteMhath:
Jo, in /var/log darf mitunter nur root (oder syslog) schreiben, weswegen ich dir auch /tmp als Pfad genannt hatte.
Jo, in /var/log darf mitunter nur root (oder syslog) schreiben, weswegen ich dir auch /tmp als Pfad genannt hatte.
ein
<code type0plain>
sudo touch /var/log/ifup.log
sudo chomod a+rw /var/log/ifup.log
sollte dias mit den Schreibrechten erldedigen.
Aber wenn das Skript beim Booten für eth0 etwas schreibt aber für l2tp nicht, bedeutet das für mich. daß es bei l2tp gar nicht aufgerufen wird. Dann sollte man nachforschen, warum das nicht der Fall ist. Da ich aber seit "potato" auf debian und (später ergänzend noch Ubuntu) migriert bin, kann ich bei CentOS da im speziellen nicht weiterhelfen. Da wären dann spezielle CentOS-Foren vermutlch bessere Informationsquellen.