用于生成其他脚本的脚本

时间:2012-12-14 17:47:35

标签: java python shell networking scripting

我正在研究这个网络项目,我需要创建许多shell脚本,以便一次从多个节点到多个节点运行“tc”,“arp”和“ping”等工具。我需要为许多节点生成几个这样的脚本。所以我需要为每个场景和配置创建许多脚本,每个脚本与另一个脚本略有不同。此外,我的作品还涉及Mininet。我需要创建python脚本以在那里生成许多自定义拓扑。如此多的长脚本难以编码是一种痛苦。

所以我想知道自动创建这些脚本的最佳方法是什么?是否可以使用另一个shell脚本生成这些shell / python脚本?或者我应该使用Java生成这些?哪种方法最简单?在我开始工作之前,只想了解你的意见。谢谢:))

2 个答案:

答案 0 :(得分:1)

当然有可能,这是一个带有脚本的最小例子:

create_a_script.sh

#!/bin/bash

echo -e \
'#!/bin/bash

ls
echo "Hello World!"' > hello.sh

chmod +x hello.sh

您可以在终端中按如下方式运行它:

$ chmod +x create_a_script.sh
$ ./create_a_script.sh

它会将以下内容写入同一目录中名为hello.sh的文件中:

#!/bin/bash

ls
echo "Hello World!"

列出当前工作目录中的文件,然后打印“Hello World!”在退出之前。

尝试使用:

$ ./hello.sh

答案 1 :(得分:1)

这是一个python函数,它创建一个用于在Excel中设置超链接的脚本。新脚本在特定页面打开特定的pdf。这个函数所属的较大程序每次运行会产生数十个,有时数百个这样的脚本,除了传递给该函数的args之外,所有这些脚本都是相同的。当用户关闭Excel并退出程序时,它们都会自动删除:

def makeOpener(pdf, page):
    '''makes a pyw file to use to hyperlink in excel'''
    t = 'c:/temp'
    if not os.path.isdir(t):
        os.makedirs(t)
    tempfile.tempdir = t
    py = tempfile.NamedTemporaryFile(suffix='.pyw', delete=False)

    lst = ['import subprocess, win32api',
           'pdf = r"' + pdf + '"',
           'page = "' + str(int(page)) + '"',
           '_, exe = win32api.FindExecutable(pdf)', 
           'opts = "page=" + page', 
           'clst = [exe, "/A", opts, "/N", pdf]', 
           'DP = 0x00000008', 
           'subprocess.Popen(clst, shell=False, creationflags=DP)'
           ]
    py.write('\n'.join(lst))       
    py.close()
    return py.name

麦克