2

我有一堆使用 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 生成函数一次性完成了几个脚本,但是每当我向这些脚本添加新选项时,我必须使这些函数保持最新,这并不理想。

4

1 回答 1

1

基于是否可以在脚本中设置 python -O(优化)标志?

#!/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()
于 2013-01-19T02:51:54.330 回答