Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 14700

Correr script phyton por php

$
0
0
Olá,

Não sei se esta secção é a correcta para colocar esta questão, se não for peço desde já desculpa.

Tenho um site que está a correr numa lan e pretendo correr um script python através de php. Na verdade, penso que o problema esteja mesmo no script em si pois eu consigo chamar o script. O problema é que apenas parte do resultado aparece, coisa que não acontece caso eu corra o script directamente na linha de comandos. Estou a usar windows para correr o script. Em baixo, o script:

Código (Python):
#!C:/Python27/python

from __future__ import print_function
from array import *
from time import gmtime, strftime

import os
import time
import subprocess
import sys
import re
import time

import urllib

def get_os(ip):
  cmd = "C:\\paexec.exe \\\\"+ip+" -low -u <username> -p <password> REG QUERY \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\" /v ProductName"
  CommandOutput, stderrText = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ).communicate()
  t=str(CommandOutput)
  t1 = t.split("REG_SZ")[1]
  t2 = t1.split('Connecting')[0]
  t3 = t2.replace(" ","")
  t4 = t3.replace("\n","")
  t5 = t4.replace("\r","")
  t6 = t5.replace("\t","")
  return t6

opener = urllib.FancyURLopener({})
f = opener.open("[url="http://10.46.12.36/sites/default/files/machine_data/ips.txt"]http://10.46.12.36/sites/default/files/machine_data/ips.txt"[/url])
text = f.read()
ip_f = text.split()
f.close()

f2 = open('C:\\xampp\\htdocs\\sites\\default\\files\\machine_data\\output.txt','w')

f2.write("guid;ip;os" + "\n")

computer_os = {}

for i in range (0, len(ip_f)):
  ip = ip_f[i]

  pause_time = 0.1

  print('======================================================')
  print(' GETTING INFO FOR ' + ip_f[i])
  print('======================================================')
  res = subprocess.call(['ping', ip, '-n', '1'])
  if res == 0:
        computer_os[i] = get_os(ip)
        time.sleep(pause_time)
        comments[i] = 'OK'

        f2.write(ip + ";" + ip + ";" + computer_os[i])
    f2.write("\n")
  else:
        time.sleep(pause_time)
        computer_os[i] = ''

        f2.write(ip + ";" + ip + ";" + computer_os[i])
        f2.write("\n")

f2.close()


O que eu consigo obter deste script é apenas a criação do ficheiro "output.txt" mas apenas com o header:

guid;ip;os

O que é suposto aparecer, no caso do ficheiro "ips.txt" ter apenas um ip, por exemplo, seria:

guid;ip;os
10.10.5.36;10.10.5.36;Windows7

Alguém sabe se há algum problema no script?
Obrigado.

Viewing all articles
Browse latest Browse all 14700