一、python模块选择
subprocess:用check_ouput 本想接收返回,但是传参麻烦、执行过程的各种权限问题,最终放弃
os.system:简单粗暴,直接本机执行,最终用这个。缺点是,只有返回码
Tip:python执行命令行不要太过复杂,否则各种奇葩问题无法排查;可以写到shell脚本里面,python去调用脚本
二、命令行写法
1.所以尽量别用 sh 命令去启动脚本(虽然本地能成功启动)。第1)种写法,死活没法启动服务
1):sshpass -p xxx ssh root@xxx.xxx.xxx.xxx sh /mnt/home/deploy/credit/pld-risk/service.sh service start
2):sshpass -p xxx ssh root@xxx.18.xxx.140 'cd /mnt/home/deploy/credit/pld-risk/ && ./service.sh service start'
2.命令中java,最好用绝对路径
cmd = '/usr/local/jdk1.8.0_181/bin/java -jar {}/jacoco/lib/jacococli.jar dump --destfile {}-test.jacoco.exec'.format(settings.COVERAGE_HOME, os.path.join(self.service_dir, self.service_name))