我有一堆使用optparse包的python脚本。我想给他们一个“ remote_run”选项,我想使用它如下:

if options.remote_run:
    cmd = create_cmd(options)
    os.system('ssh %s@%s "%s"' % (user, server, cmd))
    sys.exit(0)


函数create_cmd()应该创建与用于启动此过程的命令等效的命令,不同之处在于未设置remote_run选项。这个想法是为了使脚本将自身外包给其他服务器,以保留当前服务器的资源。

做这个的最好方式是什么?我通过编写自定义的cmd生成函数一次性完成了几个脚本,但是每当向这些脚本添加新选项时,我都必须使这些函数保持最新。

最佳答案

基于Is it possible to set the python -O (optimize) flag within a script?

#!/usr/bin/env python
import socket
import subprocess
import sys
from pipes import quote

def main():
    print(socket.gethostname())
    print(sys.argv)

if __name__=="__main__":
   if '--remote-run' in sys.argv:
      sys.argv.remove('--remote-run')
      command = ' '.join(map(quote, ['python'] + sys.argv))
      sys.exit(subprocess.call(['ssh', '%s@%s' % (user, server), command]))
   else:
      main()

关于python - 使用继承的python optparse选项生成进程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14409301/

10-12 12:45
查看更多