私は非常にPythonの新版です。以下のファイルを実際に出力してください。実際に私は何を達成するために何Pythonは出力を印刷するためにテキストファイルを扱います
NIC:
Name: eth0
ID: 0 1
Dynamic MAC Addr: 00:00:00:00:00:01
Preference: NONE
Ethernet Interface:
Name: prod
Default Network: Yes
VLAN ID: 2
Operational VLAN: SWA
Config Qual: N/A
Name: dev
Default Network: No
VLAN ID: 3
Operational VLAN: SWA
Config Qual: N/A
Name: eth1
Fabric ID: 1 0
Dynamic MAC Addr: 00:00:00:00:00:11
Preference: NONE
Ethernet Interface:
Name: prod
Default Network: Yes
VLAN ID: 2
Operational VLAN: SWB
Config Qual: N/A
Name: dev
Default Network: No
VLAN ID: 3
Operational VLAN: SWB
Config Qual: N/A
は私が持っているどのように多くのインターフェース見つける必要がある:以下
はファイルです。上記の場合、eth0とeth1。私はeth0のを確認したいがIDにeth0の0 1
を持って、私は、私は、名前PRODが存在するとVLAN ID 2は、PRODおよびデフォルトネットワークのためですはいeth0の
であるかどうかを確認する必要がありますName devが存在し、vlan ID 3がdevで、Default Networkがnoであるかどうかを確認する必要があります。
同様に、すべてのインタフェースに対してです。私は通常eth0 - 20を出力します。私はこの、それは法の下に使用して動作させることができますが、コードの下にフィールドが入れ替わっている場合は、それが動作文句を言わないので、正しいのではないを達成するために、これまで試したどのような
。私が実際にやって何
はeth0のを発見し、その上VAR 1、VAR2、VAR3とに値を下回るリダイレクトして、私の出力を取得するために、これらのVAR1、VAR2、VAR3を使用しています。
フィールドが交換されているときと、出力ファイルに余分なフィールドが追加されているときは、これは動作しません。
私はあなたが適切な方法でこれを達成するためにここに役立ちます必要
(コード以下の注意は、私がしようとしている一例です)。
from itertools import islice
import string
import re
import os
import sys
a = "eth0"
def silentremove(filename): # remove file
try:
os.remove(filename)
except OSError as e: # this would be "except OSError, e:"
if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory
raise # re-raise exception if a different error occurred
file = "inputfile.txt"
silentremove(file)
with open("vnic1.txt") as f: # Remove empty lines
for line in f:
if not line.isspace():
input_file = open('inputfile.txt', 'a')
sys.stdout = input_file
sys.stdout.write(line)
input_file.close()
sys.stdout = sys.__stdout__
d = {}
count = 0
with open('inputfile.txt') as f:
for line in f:
if (re.search(a, line, re.IGNORECASE)):
var1, var2, var3, var4, var5,var6,var7,var8,var9,var10,var11,var12,var13, var14, var15, var16 = islice(f, 16)
key, value = var1.strip().split(":", 1)
d[key] = value
ideth0 = "0 1"
if (re.search(ideth0, value, re.IGNORECASE)):
count +=1
key, value = var5.strip().split(":", 1)
d[key] = value
name = "prod"
if (re.search(name, value, re.IGNORECASE)):
count +=1
if count == 2:
print "Working"
print "Status-{}:".format(a)
print " ID Name"
print " {} {}".format(ideth0, name)
else:
print "Failed"
これはヤムのようですlファイルを読み込むためにyamlリーダーを使用してみませんか?たとえば、[ 'PyYAML'](http://pyyaml.org) – smac89