Ich möchte eine subprocess.call
erstellen, um eine Datei zu erstellen (und schließlich ausfüllen). Hier ist mein Code:Kann jemand den Unterschied in zwei Python-Befehlen erklären?
#!/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)
Gerade jetzt nur die unteren Befehl funktioniert, aber diese beiden Teilprozesse sollten genau die gleiche Sache tun (ich die Datei anders zu Testzwecken genannt haben). Ich weiß, dass es einen besseren Weg gibt, dies zu tun, aber kann jemand für meine eigene Erbauung (und Vernunft) den Unterschied erklären?
~~~~~~~~~~~~~~~~~~~~~~~ EDIT COMPLETE CODE ~~~~~~~~~~~~~~~~~~~~ ~
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
Der einzige Grund, warum ich die erf müssen, ist die Umgebungsvariable von apache zu erhalten. Ich weiß nicht wirklich, wie das funktioniert, aber ich verwende das in anderem Code ohne Subprozesse.
Nennen Sie jemals die Funktion 'index'? –
Und wenn Sie die Funktion 'index' nirgendwo aufrufen, warum erwarten Sie, dass der Inhalt dieser Funktion aufgerufen wird? –
Wie kann ich es nennen. Welches Argument benötige ich für req? – alexs973