【Python】python脚本执行laravel的php artisan命令

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

[[email protected] ~]# 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()

执行上面的脚本:

[[email protected] ~]# 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,直到命令结束:

[[email protected]]# yes yes | php artisan key:generate

【Python】python脚本执行laravel的php artisan命令
这个确认步骤如何实现的?

以上是 【Python】python脚本执行laravel的php artisan命令 的全部内容, 来源链接: utcz.com/a/79284.html

回到顶部