У меня есть следующий PHP-код, который вызывает скрипт python nmapdb.py, расположенный в той же папке, что и файл php.Выполнение скрипта python из php
function banner($name) {
$output = exec('python nmapdb.py $name');
echo $output;
}
питон scipt выглядит следующим образом:
ip=sys.argv[1]
print("Please get cup of coffee...Coz I am gonna take some time...")
nm=nmap.PortScanner()
nm.scan(hosts=ip , arguments='-sV --script=banner')
result=nm.get_nmap_last_output()
fo=open("result.xml","w")
fo.write(result)
fo.close()
con = mdb.connect('localhost', 'testuser', 'test623', 'testdb');
tree=etree.parse('result.xml')
root=tree.getroot()
root.tag
entries=tree.findall('host')
i=0
while i < len(entries):
sub=entries[i].find('address')
adr=sub.attrib['addr']
adrtype=sub.attrib['addrtype']
sub=entries[i].find('ports')
sub1=sub.findall('port')
j=0
while j < len(sub1):
prot=sub1[j].attrib['protocol']
prtid=sub1[j].attrib['portid']
sub2=sub1[j].find('state')
stat=sub2.attrib['state']
sub2=sub1[j].find('service')
servname=sub2.attrib['name']
try:
sub2.attrib['product']
except KeyError:
prod='unknown'
else:
prod=sub2.attrib['product']
try:
sub2.attrib['devicetype']
except KeyError:
devtype='unknown'
else:
devtype=sub2.attrib['devicetype']
try:
sub2.attrib['ostype']
except KeyError:
os='unknown'
else:
os=sub2.attrib['ostype']
j=j+1
comm= "http://api.hostip.info/get_json.php?ip="+adr+"&position=true"
response = urllib.urlopen(comm).read()
data=json.loads(response)
country=data['country_name']
city=data['city']
with con:
cur = con.cursor()
cur.execute("""INSERT INTO nmap_table (Ip_Addr, Addr_Type, Protocol, Port_Id, State, Service_Name, Product, Device, OS, Country, City) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", (adr, adrtype, prot, prtid, stat, servname, prod, devtype, os, country, city))
i=i+1
print("Kudos....I'm done....Please check the database...")
Но проблема в том, что, когда я звоню сценарий питона из PHP, он не работает должным образом ... только заявление первой печати приходит в браузере .... в то время как скрипт работает все хорошо, когда выполняются из терминала ... Пожалуйста, помогите ....
[exec] (http://php.net/manual/en/function.exec.php) «Последняя строка из результата команды» использует второй аргумент для вывода вывода – cske