Beispiel #1
0
def _run_ebtables_cmd(bridge,add_bool):
    
    """
    Runs all ebtables commands to set up proper firewall.
    currently, this means filtering out DHCP_OFFERS, so that dhcp servers running on an element cannot set ip addresses outside the topology.
    The rule can either be added or deleted.
    
    Parameter *bridge*
      This is the bridge the rule will be applied to.
      
    Üarameter *add_bool*
      If True, the rule will be added. If False, the rule will be deleted.
    """
    
    if not bridge: #do not allow an empty bridge. this would result in an unwanted rule.
        return
    
    add_delete = "-D"
    if add_bool:
        add_delete = "-A"
        
    cmd.run(["ebtables",
                 add_delete,"FORWARD",
                 
                 "--protocol","0x0800", #ipv4
                 
                 "--in-interface","!","eth+",
                 "--logical-in",bridge,
                 
                 "--ip-protocol","17", #udp
                 "--ip-source-port","67",
                 "--ip-destination-port","68",
                 
                 "-j","DROP"])
Beispiel #2
0
def findR():
    """
    Find path to R scripting front-end (Rscript)

    Try Rscript, $R_HOME, whereis Rscript and 
    HKLM\SOFTWARE\R-core\R*\InstallPath
    """
    R = None
    if cmd.can_run("Rscript --version"):
        R = "Rscript"
    else:
        if "R_HOME" in os.environ:
            R = os.path.join(os.environ['R_HOME'], "bin", "Rscript")
        else:
            if cmd.on_windows():
                reg_cmd = 'cmd /c %SystemRoot%\\system32\\reg.exe query HKLM\SOFTWARE\R-core /s /f InstallPath'
                reg_info, status = cmd.run(reg_cmd)
                # HKEY_LOCAL_MACHINE\SOFTWARE\R-core\R64\3.2.5
                #    InstallPath    REG_SZ    C:\Program Files\R\R-3.2.5
                for line in reg_info.split('\n'):
                    if 'InstallPath' in line:
                        # ['', '', 'InstallPath', '', 'REG_SZ', '', 'C:\\Program Files\\R\\R-3.2.5']
                        R = os.path.join(line.split(
                            '  ')[-1], "bin", "Rscript")
            else:
                if cmd.can_run("whereis ls"):
                    whereis_info, status = cmd.run("whereis Rscript")
                    # Rscript: /usr/bin/Rscript /usr/bin/X11/Rscript
                    wrscript = whereis_info.split()
                    if len(wrscript) >= 2:
                        R = wrscript[1]
    return R
Beispiel #3
0
    def test_markdown(self):
        """ test column separator in markdown output """
        data_path = os.path.join(os.path.abspath(""), "test/data/table.txt")
        out, status = cmd.run("python {} -f {}".format(script_path, data_path))
        self.assertEqual(status, 0)
        self.assertTrue(
            str(out).find("--------- | ----------- | -----------") != -1)

        tout, tstatus = cmd.run("python {} -t -f {}".format(
            script_path, data_path))
        self.assertEqual(tstatus, 0)
        self.assertTrue(str(tout).find("----------- | -----------") != -1)

        self.assertTrue(str(tout) != str(out))
    def test_gzip(self):
        """ test gzip/gunzip on a text file """
        data_path = os.path.join(os.path.abspath(""), "test/data/table.txt")
        gzdata_path = os.path.join(
            os.path.abspath(""), "test/data/table.txt.gz")

        out, status = cmd.run(
            "ls {} | python {} -f - -c \"{}\"".format(data_path, script_path, "gzip -v"))
        self.assertEqual(status, 0)
        self.assertTrue(os.path.isfile(gzdata_path))

        out, status = cmd.run(
            "ls {} | python {} -f - -c \"{}\"".format(gzdata_path, script_path, "gunzip -v"))
        self.assertEqual(status, 0)
        self.assertTrue(os.path.isfile(data_path))
    def test_google(self):
        out, status = cmd.run("python {} http://google.ca".format(script_path))
        self.assertEqual(status, 0)

        # Date: Wed, ...
        self.assertTrue(len(str(out)) > 0)
        self.assertTrue(str(out).find("Date:") != -1)
Beispiel #6
0
def runCommand(params):
    """Run command with file as parameter"""
    _command, _file = params
    command_line = _command + " " + _file
    out, status = cmd.run(command_line)
    print("# " + command_line + ":", file=sys.stderr)
    print(out, file=sys.stdout)
    def test_google(self):
        out, status = cmd.run("python {} http://google.ca".format(script_path))
        self.assertEqual(status, 0)

        # Date: Wed, ...
        self.assertTrue(len(str(out)) > 0)
        self.assertTrue(str(out).find("Date:") != -1)
Beispiel #8
0
    def test_utf8_python2_3(self):
        """ run lib/md5.py with python2 and 3 with utf8 file """
        utf8_path = os.path.abspath(
            os.path.join(".", "test", "data", "utf8.txt"))
        md5_v2, status2 = cmd.run("python2 {} {}".format(
            script_path, utf8_path))
        self.assertEqual(status2, 0)

        md5_v3, status3 = cmd.run("python3 {} {}".format(
            script_path, utf8_path))
        self.assertEqual(status3, 0)
        self.assertTrue(
            str(md5_v2).find("a28d7d1d9be5aff95d356e8b52b0244e") != -1)
        self.assertTrue(
            str(md5_v3).find("a28d7d1d9be5aff95d356e8b52b0244e") != -1)
        self.assertEqual(md5_v2, md5_v3)
Beispiel #9
0
    def test_utf8_python2_3(self):
        """ run lib/md5.py with python2 and 3 with utf8 file """
        utf8_path = os.path.abspath(
            os.path.join(".", "test", "data", "utf8.txt"))
        md5_v2, status2 = cmd.run(
            "python2 {} {}".format(script_path, utf8_path))
        self.assertEqual(status2, 0)

        md5_v3, status3 = cmd.run(
            "python3 {} {}".format(script_path, utf8_path))
        self.assertEqual(status3, 0)
        self.assertTrue(str(md5_v2).find(
            "a28d7d1d9be5aff95d356e8b52b0244e") != -1)
        self.assertTrue(str(md5_v3).find(
            "a28d7d1d9be5aff95d356e8b52b0244e") != -1)
        self.assertEqual(md5_v2, md5_v3)
Beispiel #10
0
    def test_xlsx(self):
        """ test creation of excel file """
        data_path = os.path.join(os.path.abspath(""), "test/data/table.txt")
        out, status = cmd.run("python {} -f {} -x table.xlsx".format(
            script_path, data_path))
        self.assertEqual(status, 0)

        statinfo = os.stat("table.xlsx")
        self.assertTrue(statinfo.st_size != 0)
        os.remove("table.xlsx")
Beispiel #11
0
    def test_xlsx(self):
        """ test creation of excel file """
        data_path = os.path.join(os.path.abspath(""), "test/data/table.txt")
        out, status = cmd.run(
            "python {} -f {} -x table.xlsx".format(script_path, data_path))
        self.assertEqual(status, 0)

        statinfo = os.stat("table.xlsx")
        self.assertTrue(statinfo.st_size != 0)
        os.remove("table.xlsx")
Beispiel #12
0
def _run_ebtables_cmd(bridge, add_bool):
    """
    Runs all ebtables commands to set up proper firewall.
    currently, this means filtering out DHCP_OFFERS, so that dhcp servers running on an element cannot set ip addresses outside the topology.
    The rule can either be added or deleted.
    
    Parameter *bridge*
      This is the bridge the rule will be applied to.
      
    Üarameter *add_bool*
      If True, the rule will be added. If False, the rule will be deleted.
    """

    if not bridge:  #do not allow an empty bridge. this would result in an unwanted rule.
        return

    add_delete = "-D"
    if add_bool:
        add_delete = "-A"

    cmd.run([
        "ebtables",
        add_delete,
        "FORWARD",
        "--protocol",
        "0x0800",  #ipv4
        "--in-interface",
        "!",
        "eth+",
        "--logical-in",
        bridge,
        "--ip-protocol",
        "17",  #udp
        "--ip-source-port",
        "67",
        "--ip-destination-port",
        "68",
        "-j",
        "DROP"
    ])
Beispiel #13
0
    def test_mac2unix(self):
        """ test mac 2 unix conversion """
        mac_data_path = os.path.join(os.path.abspath(""), "test/data/t.mac")
        mac_md5 = md5.md5sum(mac_data_path)
        unix_data_path = os.path.join(os.path.abspath(""), "test/data/t.unix")
        unix_md5 = md5.md5sum(unix_data_path)

        # mac -> unix
        out, status = cmd.run("python {} {} {}".format(script_path, "mac2unix",
                                                       mac_data_path))
        self.assertEqual(status, 0)
        newmd5 = md5.md5sum(mac_data_path)
        self.assertTrue(newmd5 != mac_md5)
        self.assertTrue(newmd5 == unix_md5)

        # unix -> mac
        out, status = cmd.run("python {} {} {}".format(script_path, "unix2mac",
                                                       mac_data_path))
        self.assertEqual(status, 0)
        newmd5 = md5.md5sum(mac_data_path)
        self.assertTrue(newmd5 == mac_md5)
        self.assertTrue(newmd5 != unix_md5)
Beispiel #14
0
    def test_dos2unix(self):
        """ test dos 2 unix conversion """
        dos_data_path = os.path.join(os.path.abspath(""), "test/data/t.dos")
        dos_md5 = md5.md5sum(dos_data_path)
        unix_data_path = os.path.join(os.path.abspath(""), "test/data/t.unix")
        unix_md5 = md5.md5sum(unix_data_path)

        # dos -> unix
        out, status = cmd.run("python {} {} {}".format(script_path, "dos2unix",
                                                       dos_data_path))
        self.assertEqual(status, 0)
        newmd5 = md5.md5sum(dos_data_path)
        self.assertTrue(newmd5 != dos_md5)
        self.assertTrue(newmd5 == unix_md5)

        # unix -> dos
        out, status = cmd.run("python {} {} {}".format(script_path, "unix2dos",
                                                       dos_data_path))
        self.assertEqual(status, 0)
        newmd5 = md5.md5sum(dos_data_path)
        self.assertTrue(newmd5 == dos_md5)
        self.assertTrue(newmd5 != unix_md5)
    def test_dos2unix(self):
        """ test dos 2 unix conversion """
        dos_data_path = os.path.join(os.path.abspath(""), "test/data/t.dos")
        dos_md5 = md5.md5sum(dos_data_path)
        unix_data_path = os.path.join(
            os.path.abspath(""), "test/data/t.unix")
        unix_md5 = md5.md5sum(unix_data_path)

        # dos -> unix
        out, status = cmd.run(
            "python {} {} {}".format(script_path, "dos2unix", dos_data_path))
        self.assertEqual(status, 0)
        newmd5 = md5.md5sum(dos_data_path)
        self.assertTrue(newmd5 != dos_md5)
        self.assertTrue(newmd5 == unix_md5)

        # unix -> dos
        out, status = cmd.run(
            "python {} {} {}".format(script_path, "unix2dos", dos_data_path))
        self.assertEqual(status, 0)
        newmd5 = md5.md5sum(dos_data_path)
        self.assertTrue(newmd5 == dos_md5)
        self.assertTrue(newmd5 != unix_md5)
    def test_mac2unix(self):
        """ test mac 2 unix conversion """
        mac_data_path = os.path.join(os.path.abspath(""), "test/data/t.mac")
        mac_md5 = md5.md5sum(mac_data_path)
        unix_data_path = os.path.join(
            os.path.abspath(""), "test/data/t.unix")
        unix_md5 = md5.md5sum(unix_data_path)

        # mac -> unix
        out, status = cmd.run(
            "python {} {} {}".format(script_path, "mac2unix", mac_data_path))
        self.assertEqual(status, 0)
        newmd5 = md5.md5sum(mac_data_path)
        self.assertTrue(newmd5 != mac_md5)
        self.assertTrue(newmd5 == unix_md5)

        # unix -> mac
        out, status = cmd.run(
            "python {} {} {}".format(script_path, "unix2mac", mac_data_path))
        self.assertEqual(status, 0)
        newmd5 = md5.md5sum(mac_data_path)
        self.assertTrue(newmd5 == mac_md5)
        self.assertTrue(newmd5 != unix_md5)
Beispiel #17
0
def runR(r=findR(), script="", args=""):
    """
    Run R script

        parameters
         - r: path to R scripting front-end  (Rscript)
         - script: R script filename
         - args: script parameters

        return
         - output,status (0=ok -1=error)
    """
    r_cmd = " ".join((r, script, args))
    print("\nrunning R cmd: {}\n".format(r_cmd))
    return cmd.run(r_cmd)
Beispiel #18
0
 def test_google(self):
     out, status = cmd.run(
         "python2 {} http://google.ca ".format(script_path))
     self.assertEqual(status, 0)
Beispiel #19
0
 def test_echo(self):
     out, ok = cmd.run("echo echo...")
     _os = sys.platform
     print("{} echo: {}".format(_os, str(out)))
     self.assertEqual(ok, 0)
 def test_python3(self):
     out, status = cmd.run(
         "python3 {} -v".format(os.path.join(script_path, script_path)))
     self.assertEqual(status, 0)
Beispiel #21
0
 def test_python(self):
     out, status = cmd.run("python -V")
     print("python -V: {}".format(str(out)))
     self.assertEqual(status, 0)
Beispiel #22
0
 def test_python3(self):
     out, status = cmd.run("python3 -V")
     self.assertEqual(status, 0)
Beispiel #23
0
 def test_output(self):
     out, status = cmd.run("python {}".format(script_path))
     self.assertEqual(status, 0)
     self.assertTrue(len(str(out)) > 0)
     self.assertTrue(str(out).find("IP:") != -1)
 def test_python3(self):
     out, status = cmd.run("python3 {}".format(script_path))
     self.assertEqual(status, 0)
 def test_bad_url(self):
     out, status = cmd.run(
         "python {}  http://hgoogle.hca".format(script_path))
     self.assertEqual(status, -1)
 def test_transpose(self):
     """ test replacement of blank by NA """
     data_path = os.path.join(os.path.abspath(""), "test/data/table.txt")
     out, status = cmd.run("python {} {}".format(script_path, data_path))
     self.assertEqual(status, 0)
     self.assertTrue(str(out).find("NA") != -1)
Beispiel #27
0
 def test_python3(self):
     """ run lib/md5.py script with python3 """
     out, status = cmd.run("python3 {} {}".format(script_path,
                                                  "md5 python3"))
     self.assertEqual(status, 0)
Beispiel #28
0
 def test_echo(self):
     out, ok = cmd.run("echo echo...")
     _os = sys.platform
     print("{} echo: {}".format(_os, str(out)))
     self.assertEqual(ok, 0)
Beispiel #29
0
 def test_python(self):
     out, status = cmd.run("python -V")
     print("python -V: {}".format(str(out)))
     self.assertEqual(status, 0)
Beispiel #30
0
 def test_python3(self):
     out, status = cmd.run("python3 {} -v".format(
         os.path.join(script_path, script_path)))
     self.assertEqual(status, 0)
Beispiel #31
0
 def test_python3(self):
     out, status = cmd.run("python3 -V")
     self.assertEqual(status, 0)
Beispiel #32
0
 def test_python3(self):
     out, status = cmd.run("python3 {} ".format(script_path))
     self.assertEqual(status, 0)
Beispiel #33
0
 def test_python3(self):
     """ run lib/md5.py script with python3 """
     out, status = cmd.run(
         "python3 {} {}".format(script_path, "md5 python3"))
     self.assertEqual(status, 0)
Beispiel #34
0
 def test_bad_url(self):
     out, status = cmd.run(
         "python2 {} hhttp://hgoogle.hca ".format(script_path))
     self.assertEqual(status, -1)
Beispiel #35
0
 def test_output(self):
     out, status = cmd.run("python {}".format(script_path))
     self.assertEqual(status, 0)
     self.assertTrue(len(str(out)) > 0)
     self.assertTrue(str(out).find("IP:") != -1)