我有一堆使用 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()
