django中执行shell脚本

最开始启动一个进程:

1:p = create_multiprocess(target=getsmoketest,
args=[intranetip, username, password])

def create_multiprocess(target, args=()):
p = multiprocessing.Process(target=target, args=args)
p.start()
return p

2script_path = os.path.join(BASE_DIR, "common/smoketestreport/runsmoketestcases.sh")
args = ["sh", "-x", script_path, self.ip, self.user, self.password, BASE_DIR]
exit_value = 1
try:
process = subprocess.Popen(args, bufsize=1, stdout=subprocess.PIPE, close_fds=True, preexec_fn=os.setsid,
universal_newlines=True)
while process.poll() is None:
out_put_log = process.stdout.readline()
self.logger.output_shelllog_to_logger(out_put_log)
process.wait()
exit_value = process.returncode
except Exception, e:
self.logger.error(e.message)
if exit_value != 0:
err_msg = "[DevOps_Error]:Execute " + script_path + " error!!!"
self.logger.error(err_msg)
return self.EXCEPTION
return self.NORMAL

这样算是开始执行脚本了,但是在shell脚本有个问题:
1脚本要识别这个Django框架路径,也就是用到了BASE_DIR这个路径
2在shell脚本开启spawn的时候,最好设置set timeout -1这句话

代码:
/usr/bin/expect <<EOF
set timeout -1
  spawn ssh -o "StrictHostKeyChecking no" $user@$ip \[ \! -d $SMOKETESTCASESSAVEDIR/ \]  && mkdir $SMOKETESTCASESSAVEDIR/
  expect {
      "$ip's password:" { send "$password\r"; exp_continue}
      }  
  spawn scp -o "StrictHostKeyChecking no" $script_path/$sshFileName $user@$ip:$SMOKETESTCASESSAVEDIR
  expect {
      "$ip's password:" { send "$password\r"; exp_continue}
      }      
  spawn scp -o "StrictHostKeyChecking no" $script_path/threadnameconfig.xml $user@$ip:$SMOKETESTCASESSAVEDIR
  expect {
      "$ip's password:" { send "$password\r"; exp_continue}
      }
  spawn ssh -o "StrictHostKeyChecking no" $user@$ip sh $SMOKETESTCASESSAVEDIR/$sshFileName
  expect {
      "$ip's password:" { send "$password\r"; exp_continue}
      }      
  spawn scp -o "StrictHostKeyChecking no" $user@$ip:$SMOKETESTCASESSAVEDIR/checkprojectrun.log $SMOKETESTCASESSAVEDIR
  expect {
      "$ip's password:" { send "$password\r"; exp_continue}
      }
EOF
后续再继续深入研究


posted on 2017-03-21 17:26  费晓晖  阅读(5522)  评论(0编辑  收藏  举报