Ich habe ein einfaches Skript, das Argumente und dann auf diesen Argumenten Befehle ausführen wird. Für die Ausgabe jedes Befehls speichert es es in eine Datei und dann am Ende reißt es die Dateien. Es macht die Dateien mit der vollständigen Ausgabe des Befehls in es, aber wenn es dann die Dateien reißt, legt es nicht die ganze Datei hinein. Es fängt die erste Zeile ein und das ist alles. Die erste Datei geht ohne Probleme rein.Python ZipFile zippen einen Teil der Textdateien
#!/usr/bin/python
import sys
import os
import subprocess
from zipfile import ZipFile
filenames = []
def zip():
with ZipFile('zippity.zip', 'w') as zip:
for file in filenames:
zip.write(file)
def command(cmd, arg, banner, filename, i):
ban = '------------' + banner + '-------------\n'
if i.islower():
filenames.append(filename)
f = open(filename, 'w')
f.write(ban)
if arg == '':
subprocess.Popen(cmd, stdout=f)
else:
subprocess.Popen([cmd, arg], stdout=f)
f.close()
elif i.isupper():
filenames.append(filename)
print '------------' + banner + '-------------'
os.system(cmd)
print('\n')
f = open(filename, 'w')
f.write(ban)
if arg == '':
subprocess.Popen(cmd, stdout=f)
else:
subprocess.Popen([cmd, arg], stdout=f)
f.close()
def menu():
print('System Survey v1.0\n' +
'Usage: ' + sys.argv[0] + ' [OPTIONS]\n' +
'Example: ' + sys.argv[0] + ' -a -i -r -b\n' +
'Description: Lowercase will create file and not display to screen. \n' +
'Uppercase will display and save to file.\n\n' +
'----[OPTIONS]----\n' +
'-i ifconfig -a\n' +
'-r route\n' +
'-w whoami\n')
for i in sys.argv:
if len(sys.argv) == 1:
menu()
break
if i == '--help':
menu()
break
elif i == '-i' or i == '-I':
command('ifconfig', '-a', 'IFCONFIG', 'ifconfig.txt', i)
elif i == '-r' or i == '-R':
command('route', '', 'ROUTE', 'route.txt', i)
elif i == '-w' or i == '-W':
command('whoami', '', 'WHOAMI', 'whoami.txt', i)
elif i == sys.argv[0]:
continue
else:
print(sys.argv[0] + ': option not recognized.')
print(sys.argv[0] + ': --help gives usage information.')
zip()
Ehrfürchtig, das half aber jetzt, dass Banner "------------ Banner -----------" am unteren Rand jeder Ausgabe druckt. – sqlsqlsql
Das klingt nach einer anderen Frage. –