【问题标题】:Script to generate other scripts生成其他脚本的脚本
【发布时间】:2012-12-02 18:07:00
【问题描述】:

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

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

【问题讨论】:

  • 当然有可能,脚本只不过是普通的文本文件。您是否尝试过生成一个?
  • 这个问题有点含糊,可能“没有建设性”;当然,如果不了解脚本要做什么、它们如何变化、何时需要更改等,就无法说出“最好的方法”

标签: java python shell networking scripting


【解决方案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

【讨论】:

    【解决方案2】:

    这是一个 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
    

    迈克

    【讨论】:

    • 再次,非常有用的东西。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多