1. 程式人生 > >基於python的交互式訪問

基於python的交互式訪問

手指 容器 conf 同事 構建 lock 腳本 /usr 方法

應用遷移中遇到一些有特殊要求的應用,比如需要通過交互生成一些新的config文件,然後啟動應用需要依賴於這些文件,這樣在構建鏡像的時候基本上是沒有辦法把這些文件固定的,因為他需要根據運行環境去進行動態註冊生成,目前的解決方法如下:

1.寫一段支持交互的python腳本,生成配置

#!/usr/bin/python

import subprocess
import time
import fcntl
import os

p = subprocess.Popen(["java","-jar","a.jar"],stdin=subprocess.PIPE,stdout=subprocess.PIPE)

flags 
= fcntl.fcntl(p.stdout,fcntl.F_GETFL) fcntl.fcntl(p.stdout,fcntl.F_SETZFL,flags| os.O_NONBLOCK) time.sleep(2) print p.stdout.read() p.stdin.write("1\r\n")

開始調試時屏幕一直處於blocking狀態,後來同事高手指導下加入NONBLOCK後才通過。

2.將python腳本放入tomcat運行的catalina.sh,讓他在啟動容器後,啟動腳本一開始就運行

基於python的交互式訪問