Denksport fürs Wochenende

09/11/2007 - 12:55 von Alexander Griesser | Report spam
Griass eich!

Ich bin gerade dabei, perl von meinen Thinclients zu schmeißen (wird
momentan fast nirgednswo mehr gebraucht, ausser bim vpnc-script).

Und genau darum gehts. Der Bequemlichkeit halber hab ich einfach das
vpnc-script von Debian übernommen (keine Ahnung, was davon ich wirklich
brauche, aber zumindest funktionierts einmal).

Folgendes Code-Snippet verwendet perl:

#v+
# backwards compatibility mapping for old extensions
if test "$TARGET_NETWORKS" ; then
i=0
for network in $TARGET_NETWORKS ; do
eval CISCO_SPLIT_INC_${i}_ADDR=`echo $network | cut -f1 -d/`
eval CISCO_SPLIT_INC_${i}_MASKLEN=`echo $network | cut -f2 -d/`
eval CISCO_SPLIT_INC_${i}_MASK=$( perl -e
'$ARGV[0]=~s,.*/,,;$m=(2**$ARGV[0]-1)<<(32-$ARGV[0]);printf
"%d.%d.%d.%d", $m>>24 & 0xff, $m>>16 & 0xff, $m>>8 & 0xff, $m & 0xff;'
$network )
eval CISCO_SPLIT_INC_${i}_PROTOCOL=0
eval CISCO_SPLIT_INC_${i}_SPORT=0
eval CISCO_SPLIT_INC_${i}_DPORT=0
i=`expr $i + 1`
done
CISCO_SPLIT_INC=$i
fi
#v-

Also das Perl-Command hier sieht ein bisserl brutal aus und da dachte
ich mir, ich geb euch eine Beschàftigung fürs Wochende ;)

Das komplette vpnc-script kann man übrigens (falls nötig) von hier [0]
runterladen (sollte der Zusammenhang interessant sein).

Danke schon im Voraus für eure Anregungen, wie man diesen perl-Aufruf
durch Standard Unix Tools (awk, sed, etc.) ersetzen kann.

ciao,
Alex

[0] http://tuxx-home.at/temp/vpnc-script (ist noch eine àltere Version
des Skriptes)
 

Lesen sie die antworten

#1 Alexander Bartolich
09/11/2007 - 14:01 | Warnen spam
Alexander Griesser schrieb:
[...]
eval CISCO_SPLIT_INC_${i}_MASK=$( perl -e
'$ARGV[0]=~s,.*/,,;$m=(2**$ARGV[0]-1)<<(32-$ARGV[0]);printf
"%d.%d.%d.%d", $m>>24 & 0xff, $m>>16 & 0xff, $m>>8 & 0xff, $m & 0xff;'
$network )
[...]
Danke schon im Voraus für eure Anregungen, wie man diesen perl-Aufruf
durch Standard Unix Tools (awk, sed, etc.) ersetzen kann.



n="${network#*/}"
printf "%d.%d.%d.%d" $( echo "obase; (2 ^ $n - 1) * 2 ^ (32 - $n)" | bc -q | sed 's/../ 0x&/g' )

http://news.albasani.net/

Ähnliche fragen