Как использовать подпроцесс для запуска команд linux в файле python перед другим кодом Python и использовать вывод подпроцесса для следующей обработки? - PullRequest
0 голосов
/ 23 марта 2019

Сначала я хочу запустить команды linux. Что вы хотите использовать, чтобы этот файл capture-csv был получен из этих команд для дальнейшей обработки в коде под этими командами.

import requests
import csv
import pandas as pd
import os
import sys
import subprocess


subprocess.run(["iw","phy","phy0","interface","add","mon0","type","monitor"])  ##these three commands return csv file named capture-csv-01
subprocess.run(["ifconfig","mon0","up"])
subprocess.run(["airodump-ng","-w","capture.csv","mon0"])

with open('/root/Desktop/Python-3.6.5/capture.csv-01.csv' ) as f:              ## open csv file
    s = f.read().split('\n\n')                                                 ## split file in two files using dataframes on the basis of empty line
    df1=pd.read_csv(pd.compat.StringIO(s[0]))
    df2=pd.read_csv(pd.compat.StringIO(s[1]))
   ## df2.info()
##    df2.drop(df2.columns[[4]],axis=1,inplace=True)   
    for index,row in df2.iterrows():                 ## read each value of each column
        Station_MAC= (row["Station MAC"])
        First_time_seen=(row[" First time seen"])
        Last_time_seen=(row[" Last time seen"])
        Power=(row[" Power"])
        Packets=(row[" # packets"])
        BSSID=(row[" BSSID"])
        Probed_ESSIDs=(row[" Probed ESSIDs"])
        print(Station_MAC,First_time_seen,Last_time_seen,Power,Packets,BSSID,Probed_ESSIDs)
        ##code to send data to database
        url = "http://10.5.9.162/api/customers_data/create.php"              
        headers = {
       'cache-control': "no-cache",
       'Postman-Token': "ca64cf56-19e8-4e6c-85a7-1741355ced79"
         }
        payload = '{"Station_MAC": "'+str(Station_MAC)+'","First_time_seen": "'+str(First_time_seen)+'","Last_time_seen": "'+str(Last_time_seen)+'","Power": "'+str(Power)+'","Packets":"'+str(Packets)+'","BSSID": "'+str(BSSID)+'","Probed_ESSIDs": "'+str(Probed_ESSIDs)+'"}'
        response = requests.request("POST", url, data=payload, headers=headers)
        print(response.text)

Когда я запускаю подпроцессы и код под командами подпроцесса отдельно в отдельных файлах python, я получаю то, что хочу. Но когда я записываю их в один файл только над тремя строками, запускаю nad, чтобы дать csv файл в результате, и тогда ничего не происходит. Как я могу это сделать .?

...