H5W3
当前位置:H5W3 > 其他技术问题 > 正文

python脚本执行laravel的php artisan命令

laravel执行下面php artisan命令的时候,有一个确认步骤:

[root@vagrant-prod ~]# php artisan key:generate
**************************************
*     Application In Production!     *
**************************************

 Do you really wish to run this command? (yes/no) [no]:
 > yes

现在用python脚本来自动化执行上面这个命令:

脚本auto.py

#!/usr/bin/python3
import os

#重新生成key
def regenerate_key():
    os.system('cd /var/www/laravel_blog && php artisan key:generate')

if __name__ == "__main__":
    regenerate_key()

执行上面的脚本:

[root@vagrant-prod ~]# python3 auto.py

问题:
执行脚本和直接输入命令一样,会要求确认。怎么让这个脚本自动确认,而不用手动再输yes?

回答:

一种是使用自身的–no-interaction选项;
另一种是使用进程间通信,向php进程的标准输入写入”yes”,比如:

import subprocess

p = subprocess.Popen(['php', 'artisan key:generate'], stdin=subprocess.PIPE)
p.stdin.write('yes')
p.stdin.flush()

还有一种简单的方法,yes命令会不断输入yes,直到命令结束:

[root@iZbp]# yes yes | php artisan key:generate

回答:

clipboard.png
这个确认步骤如何实现的?

本文地址:H5W3 » python脚本执行laravel的php artisan命令

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址