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"])
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
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)
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)
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)
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)
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")
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")
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" ])
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)
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)
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)
def test_google(self): out, status = cmd.run( "python2 {} http://google.ca ".format(script_path)) self.assertEqual(status, 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)
def test_python(self): out, status = cmd.run("python -V") print("python -V: {}".format(str(out))) self.assertEqual(status, 0)
def test_python3(self): out, status = cmd.run("python3 -V") self.assertEqual(status, 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)
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)
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_python(self): out, status = cmd.run("python -V") print("python -V: {}".format(str(out))) self.assertEqual(status, 0)
def test_python3(self): out, status = cmd.run("python3 {} -v".format( os.path.join(script_path, script_path))) self.assertEqual(status, 0)
def test_python3(self): out, status = cmd.run("python3 -V") self.assertEqual(status, 0)
def test_python3(self): out, status = cmd.run("python3 {} ".format(script_path)) self.assertEqual(status, 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)
def test_bad_url(self): out, status = cmd.run( "python2 {} hhttp://hgoogle.hca ".format(script_path)) self.assertEqual(status, -1)
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)