2017-12-11 6 views
0

Ich versuche, Systeminformationen in eine Tabelle zu schreiben. aber wenn ich versuche, meine Variablen zu verwenden, kommen sie schwarzwie Systeminformationen in eine Tabelle in Python schreiben

import csv import os Import linecache

os.system('getmac -v > mac.txt') 
os.system("wmic bios get serialnumber > serial.txt") 
os.system("wmic computersystem get model > model.txt") 
os.system("hostname > hostname.txt") 
os.system("ipconfig > ip.txt") 


open('ip1.txt','w').writelines([line for line in open('ip.txt')if 'IPv4' in line]) 
open('mac1.txt','w').writelines([line for line in open('mac.txt')if 'Wi-Fi' in line]) 
open('mac2.txt','w').writelines([line for line in open('mac.txt')if 'Ethernet' in line]) 

serial = linecache.getline('serial.txt', 3) 
model = linecache.getline('model.txt', 3) 

mac = open("mac.txt","r") 
IP = open("ip1.txt","r") 
mac1 = open("mac1.txt","r") 
mac2 = open("mac2.txt","r") 
hostname = open("hostname.txt","r") 



Rmac = mac.read() 
Rip = IP.read() 
Rmac1 = mac1.read() 
Rmac2 = mac2.read() 
Rhostname = hostname.read() 



myData = [[model]] 

myFile = open('example2.csv', 'w') 
with myFile: 
    writer = csv.writer(myFile) 
    writer.writerows(myData) 

aus dieser wird nicht nur die Information in die Tabelle schreiben? Was mache ich falsch? Ich bin sehr neu in der Programmierung btw

Antwort

0

Sie benötigen keine zwischengeschalteten Dateien, warum nicht rufen Sie Ihre Befehle und schreiben Sie ihre Informationen auf Ihre CSV sofort ohne all das hin und her tanzen?

import csv 
import subprocess 

# get the model 
model = subprocess.check_output(["WMIC", "computersystem", "get", "model"], 
           universal_newlines=True).strip().rsplit("\n", 1)[1] 
# get the serial 
serial = subprocess.check_output(["WMIC", "bios", "get", "serialnumber"], 
           universal_newlines=True).strip().rsplit("\n", 1)[1] 
# get the host name 
hostname = subprocess.check_output(["hostname"], universal_newlines=True).strip() 

# get WMI output for all addresses 
ips = subprocess.check_output(["WMIC", "NICCONFIG", "where", "IPEnabled=true", 
           "get", "IPAddress"], 
           universal_newlines=True).strip().split("\n\n")[1:] 
# post-process to get the addresses only 
ips = [ip.split(",")[0].strip('"{} ') for ip in ips] 

# etc. 

with open("example2.csv", "wb") as f: # open your CSV for writing 
    writer = csv.writer(f) # create a writer 
    # you didn't write a header but let's add it in 
    writer.writerow(["model", "serial", "hostname", "ips"]) # etc., you get the picture... 
    writer.writerow([model, serial, hostname, ",".join(ips)]) # add other columns, too 

Und Sie werden ein schönes example2.csv enthält erhalten:

model,serial,hostname,ips 
Your Model,Your Serial,Your-Hostname,List.Of.IP.Addresses

tun das gleiche für die anderen Felder und du bist fertig.

+0

Wie wäre es, wenn ich das verwende? open ('ip1.txt', 'w'). Writelines ([Zeile für Zeile im offenen ('ip.txt') wenn 'IPv4' in der Zeile]) –

+0

@demetriwolf - überprüfe das Update, es analysiert IP-Adressen von WMI – zwer

+0

so müsste den genauen Befehl zu finden, sagen wir mal die Wifi und Ethernet-MAC-Adressen auch? Ich kann sehen, dass es irgendwie mit wmic getan werden kann, aber es wird mir nicht sagen was was ist? –