pythonで自動化スクリプトで wordpressをなんとかしたい。
nextcloudやwordpressとかphpでできたアプリの設定ファイルを読み取って、データベースをバックアップしたい。
でも、データベースのユーザを増やすのは管理が手間。データベースのパスワードを直接記述は避けたい。でも、phpの設定ファイルにはデータベースが記述されているんですよね。
だったら、phpを実行して無理やり読んじゃえばいい。
pythonでphpを起動する
subprocessでphpを実行できるような関数を作っておく
import subprocess def run_php(source_string: str, php_path=None) -> str: if php_path is None: ret = subprocess.check_output(['which', 'php']) php_path = str(ret, 'utf-8').strip() php_path = php_path.split() if source_string[0:5] != '<?php': source_string = f"<?php {source_string}" p1 = subprocess.Popen(php_path, shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE) php_source = bytes(source_string, 'utf-8') p1.stdin.write(php_source) p1.stdin.close() p1.wait() ret = p1.stdout.read() return str(ret, 'utf-8')
configを出力させる。
要は、ssh経由ログインしphpを実行して、結果を実行すればいいわけで。
def wordpress_config(wp_path): source = f""" include '{wp_path}/www-data/wpconfig.php'; echo json_encode($CONFIG); """ # ret = run_php(source, 'ssh server php') ret = run_php(source) ret = json.loads(ret) return ret
読み込みたいファイルを読み込んで、json返却させてpythonで読み取れば、mysql のソース・コードを書かずに ssh の 秘密鍵をセキュリティレベルにすることができるんだね。