Bash Skript für openconnect

stupidus

Lt. Junior Grade
Registriert
Nov. 2007
Beiträge
496
Hallo,

ich habe folgendes Problem. Ich muss mich öfters in ein Cisco AnyConnect VPN einloggen. Bisher habe ich dazu die offizielle Cisco-Software genutzt. Aber seid kurzem spinnt die und bringt mein komplettes System zum Absturz. Googlen nach der Fehlermeldung hat nicht gebracht. Und im Prinzip ist es mir auch egal, was da schiefläuft. Die deutlich einfachere Lösung ist es, einfach openconnect zu benuten. Dies funktioniert mit folgendem Befehl:

Code:
openconnect -b --script=/etc/vpnc/vpnc-script --username=bla vpn.whatever.tld

Dieser Befehl funktioniert als root ausgeführt bestens. Durch den -b Parameter wird das auch im Hintergrund ausgeführt, und ich kann die entsprechende Shell danach schließen, ohne das der Prozess beendet wird.

Natürlich will ich mich aber nicht jedes mal als root einloggen, wo ich ja erst mein Root-Passwort eingeben muss. Also habe ich sudo so konfiguriert, dass mein Benutzer diesen Befehl ohne Passwort mit Root-Rechten ausführen darf.

Dadurch kann ich folgenden Befehl mit meinem normalen Benutzer ausführen:
Code:
sudo openconnect -b --script=/etc/vpnc/vpnc-script --username=bla vpn.whatever.tld

Damit ich diesen Befehl nicht immer eingeben muss, habe ich das ganze in ein Skript geschrieben. Führe ich dieses in einem Terminal aus, dann kann ich das danach auch schließen und die VPN-Verbindung bleibt bestehen.

Jetzt muss ich aber immer noch ein Terminal öffnen und den Pfad zu dem Skript manuell eintippen. Ich würde das aber lieber auf Knopfdruck haben. Da ich ja aber noch das Passwort für den VPN eintippen muss, habe ich folgendes Skript geschrieben:

Code:
#!/bin/bash
xterm -e sudo openconnect -b --script=/etc/vpnc/vpnc-script --username=bla vpn.whatever.tld

Seltsamerweise funktioniert dieses Skript aber nicht. Er öffnet zwar xterm, fragt mich dort nach dem Passwort, baut die Verbindung auf, schließt danach xterm und die Verbindung ist weg. Wieso funktioniert das so nicht? Was ist der Unterschied dazwischen, ob ich ein xterm öffne und da den Befehl eingebe, oder ob ich xterm -e benutze?

Wie kann ich mein Problem lösen? Das Ziel ist es, das Skript am Ende einfach in KDE mit irgendeinem Hotkey zu belegen, so dass auf Knopfdruch xterm erscheint, ich mein Passwort eingeben kann, und dann xterm wieder verschwindet, und ich online bin.

Weitere Informationen:
OS: Arch Linux i686 (auf aktuellem Stand)
Falls sonst noch was benötigt wird, kann ich das nachliefern.

Vielen Dank im Voraus.
 
versuch mal :

xterm -e /bin/bash -l -c "sudo openconnect -b --script=/etc/vpnc/vpnc-script" --username=bla vpn.whatever.tld

openconnect und sudo vielleicht noch mit Pfad.
statt bash kann auch eine andere shell verwendet werden: anpassen
 
Zuletzt bearbeitet:
Danke für die Antwort.

Allgemein funktioniert der folgende Befehl schon:

Code:
xterm -e /bin/bash -l -c "command"

Für command kann ich ziemlich viel einsetzen, und es funktioniert auch. Setze ich aber sudo ein, dann öffnet sich ein xterm-Fenster und macht nichts.
Leider habe ich im Moment auch nich so viel Zeit mich damit zu beschäftigen. Bis zum Wochenende werde ich noch mit der Lösung einfach den Befehl in die Konsole einzutippen klarkommen. Danach habe ich dann auch mehr Zeit und werde mir das nochmal anschauen.
 
ich habe es getestet mit:

xterm -e /bin/bash -l -c "sudo mail -s test gxxxx < /opt/tools/testdatei"

Und es funktioniert, zumindest bei einer suse12.1

Vielleicht liegt das Problem bei openconnect, dass ich hier nicht testen kann.
Mal mit absoluten Pfad aufrufen.
Vielleicht wird ja was ausgegeben > Umleiten in eine Datei
 
Du hast recht es funktioniert auch mit sudo. Dass es bei mir nicht ging, war der Effekt eines Bugs im Kernel:

https://bugs.archlinux.org/task/26847

Seit ich das ipv6-Modul abgeschalten habe, ist das zumindest behoben. Dieser Bug war vermutlich auch der Grund, wieso der offizielle Cisco-Client bei mir immer abgestürzt ist und weshalb ich überhaupt erst auf openconnect umgestiegen bin.

Allerdings möchte ich jetzt trotzdem bei openconnect bleiben. Damit bleibt das Ursprungsproblem bestehen. Und eine erster Test mit dem neuen Befehl hat das gleiche Ergebnis wie früher ergeben. D.h. openconnect beendet sich trotzdem zusammen mit xterm.

Aber ich werde das später noch genauer testen.
 
Zurück
Oben