Okt
12
2010
1

[HowTo] vpnc per skript via zsh starten

Als Alternative zum relativ dreckig programmierten Cisco VPN Client bietet sich unter Linux stets das Paket vpnc an. Dieses lässt sich unter Linux via

sudo aptitude install vpnc

mit einem Einzeiler installieren. sudo vpnc wird entweder interaktiv gestartet, wobei Gateway, Benutzername usw. abgefragt werden, oder aber per Konfigurationsdatei (/etc/vpnc/default.conf).

Der Inhalt einer solchen Datei sollte folgendermaßen aussehen:

IPSec gateway GATEWAY_IP
IPSec ID GROUP_ID
IpSec secret GROUP_PASSWORD
Xauth username USERNAME
Xauth password PASSWORD

Die Wörter in Versalien müssen natürlich durch die eigenen Einstellungen ersetzt werden. Der Nachteil dieser Methode liegt eindeutig darin, dass das Passwort im Klartext in der Konfigurationsdatei stehen muss.

Abhilfe schafft die “magische” z-shell, über die ich gerade ein schönes Buch lese:

Zunächst legt man eine Skript-Vorlage unter /etc/vpnc/vorlage.conf ab, in der alle Variablen bis auf das Passwort ersetzt worden sind. Das Passwort lässt sich bequem per stream editor sed ersetzen. Die Ausgabe von sed (mit dem ersetzten Passwort) kann man mit Hilfe der z-shell in eine temporäre Datei abgelegt werden, auf die vpnc zugreifen kann, und direkt nach Ausführen des Befehls wieder gelöscht wird:

#!/bin/zsh

PASS=`kdialog --password "Bitte VPN-Passwort eingeben!" 2>/dev/null`
sudo vpnc =(sed "s/PASSWORD/$PASS/g" /etc/vpnc/vorlage.conf)

Möchte man zudem, dass vpnc ohne Passwort als sudo ausgeführt werden kann, so bietet der Befehl sudo visudo Abhilfe. Das Ganze sollte dann so aussehen:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
Defaults env_reset

# Cmnd alias specification
Cmnd_Alias VPNC = /usr/sbin/vpnc, /usr/sbin/vpnc-connect, /usr/sbin/vpnc-disconnect

# User privilege specification
root ALL=(ALL) ALL
hensing ALL= ALL

hensing ALL=NOPASSWD: VPNC

Editor beenden und freuen. Viel Spaß damit!

Powered by WordPress | Aeros Theme | TheBuckmaker.com | Original background by Dino Abatzidis | modified by H.Dickten