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?

阅读 4.5k
2 个回答

一种是使用自身的--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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题