source: starbed_plugin/peer_setup.py @ 2f45140

Last change on this file since 2f45140 was 2f45140, checked in by ABDULLA ALWABEL <abdullaalwabel@…>, 12 years ago

Handeling ssh key properly and portal connection

  • Property mode set to 100755
File size: 2.4 KB
Line 
1#!/usr/bin/python
2import subprocess
3import re
4import os
5import sys, getopt
6
7class Peer:
8        @staticmethod
9        def getIP(interface):
10                proc = subprocess.Popen(['ifconfig',interface],stdout=subprocess.PIPE)
11                exit_code = os.waitpid(proc.pid, 0)
12                result = proc.communicate()[0]
13                m = re.search('inet addr:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})',result)
14                if not m:
15                        raise LookupError('Interface does not exist or IP is not assigned!')
16                else:
17                        return m.group(1)
18        @staticmethod
19        def setIP(interface,ip):
20                proc = subprocess.Popen(['ifconfig',interface,ip,"up"],stdout=subprocess.PIPE)
21                exit_code = os.waitpid(proc.pid, 0)
22        @staticmethod
23        def setBridge(bridgename):
24                proc = subprocess.Popen(['brctl', 'addbr',bridgename],stdout=subprocess.PIPE)
25                exit_code = os.waitpid(proc.pid, 0)
26        @staticmethod
27        def addIfaceToBridge(iface,bridge):
28                proc = subprocess.Popen(['brctl','addif',bridge,iface],stdout=subprocess.PIPE)
29                exit_code = os.waitpid(proc.pid, 0)
30        @staticmethod
31        def delBridge(bridgename):
32                proc = subprocess.Popen(['brctl', 'delbr',bridgename],stdout=subprocess.PIPE)
33                exit_code = os.waitpid(proc.pid, 0)
34        @staticmethod
35        def ifUp(interface):
36                proc = subprocess.Popen(['ifconfig',interface,"up"],stdout=subprocess.PIPE)
37                exit_code = os.waitpid(proc.pid, 0)
38        #add the port and make sure you increase the tunnel number!
39        @staticmethod
40        def tunnelConnect(dest,key,bridge,iface):
41                print ['ssh','-o','Tunnel=ethernet','-f','-w','0:0','-p','22','-i',key,dest,'true']
42                proc = subprocess.call(['ssh','-o','Tunnel=ethernet','-f','-w','0:0','-p','22','-i',key,dest,'true'])
43                #Need to be fixed
44                Peer.addIfaceToBridge('tap0',bridge)
45                Peer.ifUp(iface)
46                Peer.ifUp('tap0')
47                Peer.ifUp(bridge)
48try:
49        opts, args = getopt.getopt(sys.argv[1:],"d:k:b:i:")
50        dest = None
51        key = None
52        bridge = None
53        interface = None
54        for opt, arg in opts:
55                if opt == '-d':
56                        dest = arg
57                elif opt == '-k':
58                        key = arg
59                elif opt == '-b':
60                        bridge = arg
61                elif opt == '-i':
62                        interface = arg
63        if not dest:
64                print "Missing Arguemnts! destionation"
65                sys.exit(2)
66        if not key:
67                print "Missing Arguemnts! key"
68                sys.exit(2)
69        if not bridge:
70                print "Missing Arguemnts! bridge"
71                sys.exit(2)
72        if not interface:
73                print "Missing Arguemnts! interface"
74                sys.exit(2)
75
76        Peer.tunnelConnect(dest,key,bridge,interface)
77except getopt.GetoptError:
78        #print "peer_setup.py -d=destination -k=key -b=bridge -i=interface"
79        #sys.exit(2)
80        pass
81
Note: See TracBrowser for help on using the repository browser.