import sys
...
consul_ip = sys.argv[2]
install_path = ...
...
os.system('mkdir -p '+install_path)
...
def create_env_str(env_dict):import pdbpdb.set_trace()env_str = ""for k, v in env_dict.items():env_str = env_str + "export " + k + "=" + v + "\n"return env_str
env_dict = {"install_path": install_path,"current_dir": current_dir,"req_path": req_path,"deps_path": deps_path,"packages": packages,"log_path": log_path,"consul_ip": sys.argv[2]
}
def gen_script_fire(env_dict):env = create_env_str(env_dict)cmd = '''
#此处是往“/tmp/vmware-exporter-systemctl”文件中写内容,配置服务
sudo cat >/tmp/vmware-exporter-systemctl<[Unit]
Description&#61;Vmware Exporter
After&#61;network.target
[Service]
ExecStart&#61;/usr/bin/python ${install_path}/vmware_exporter/vmware_exporter/vmware_exporter.py -c ${consul_ip}
[Install]
WantedBy&#61;default.target
EOF
...&#39;&#39;&#39;with open(&#39;/tmp/service_firewalld.sh&#39;, &#39;w&#43;&#39;) as f:f.write("#!/bin/bash" &#43; "\n")f.write(env)f.write(cmd)def run(cmd):
ret &#61; subprocess.call(cmd, shell&#61;True)if ret !&#61; 0:sys.exit(&#39;Exec cmd %s error, return value: %s&#39; % (cmd, str(ret)))def run_script():run("sudo bash /tmp/service_firewalld.sh")gen_script_fire(env_dict)
run_script()
注意&#xff1a;
cmd&#61; ”’ ”’ 中有expect命令时&#xff0c;可能出现expect spawn not found
错误
原因&#xff1a;expec不是shell中的命令&#xff0c;所以在执行bash shellname.sh
时会报错
解决&#xff1a;参考&#xff1a;http://blog.csdn.net/chinabluexfw/article/details/7461944
1. 不用bash
或sh
执行shell脚本&#xff0c;使用./shellname.sh
命令执行
2. 使用chmod &#43;x shellname.sh
赋权限