我想要做一個subprocess.call
創建一個文件(並最終填充它)。這裏是我的代碼:有人可以解釋兩個Python命令的區別嗎?
#!/usr/bin/python
import sys
import subprocess
import psycopg2
import base64
import urlparse
sys.path.append('/var/www/cgi-bin')
def index(req):
out = ""
mkFile = str("touch /etc/httpd/conf/ipForward/90.conf")
subprocess.call([mkFile],shell=True)
return out
mkFile = str("touch /etc/httpd/conf/ipForward/111.conf")
subprocess.call([mkFile],shell=True)
眼下只有底部命令的工作,但這兩個子進程應該做同樣的事情(我命名爲不同的測試目的文件)。我知道有一個更好的方法來做到這一點,但是,爲了我自己的教誨(和理智),有人可以解釋這種差異嗎?
~~~~~~~~~~~~~ 〜
def index(req):
out = ""
conn = psycopg2.connect("dbname='pwp' host='localhost' user='~~~' password='~~~~~'")
c = conn.cursor()
inClCN = str(req.subprocess_env['SSL_CLIENT_S_DN_CN'])
c.execute("select * from Users where cn = '{0}';".format(inClCN))
rows = c.fetchall()
for row in rows:
port = row[0]
mkFile = str("touch /etc/httpd/conf/ipForward/{0}.conf".format(port))
subprocess.call([mkFile],shell=True)
insert = r"""Listen {0}\n\n<VirtualHost _default_:{1}>\n\nDocumentRoot '/var/www/html/'\nDirectoryIndex indexAlex.py\n\nRewriteEngine On\n\nErrorLog /etc/httpd/logs/error_log\nTransferLog /etc/httpd/logs/access_log\nLogLevel warn\n\n\nNSSVerifyClient require\n\nNSSEngine on\nNSSFIPS on\nNSSProtocol(MORE CONF STRING)</VirtualHost>""".format(port,port)
confFile = str('echo "{0}" >> /etc/httpd/conf/ipForward/{1}.conf'.format(insert,port))
subprocess.call([confFile],shell=True)
return out
我需要req的唯一原因是從apache獲取環境變量。我真的不知道這是如何工作的,但我一直在其他沒有子流程的代碼中使用它。
你有沒有真的在任何地方調用函數'index'? –
如果你沒有在任何地方調用函數'index',你爲什麼期望該函數的內容被調用? –
我怎麼稱呼它。我需要什麼參數來請求? – alexs973