def save_session(fname=None, session=None, pickleProto=4):
import dill as pickle
if fname is None:
fname = conf.session
if not fname:
conf.session = fname = utils.get_temp_file(keep=True)
log_interactive.info("Use [%s] as session file" % fname)
if session is None:
session = builtins.__dict__["scapy_session"]
to_be_saved = session.copy()
for k in list(to_be_saved.keys()):
if k in ["__builtins__", "In", "Out", "conf"] or k.startswith("_") or \
(hasattr(to_be_saved[k], "__module__") and str(to_be_saved[k].__module__).startswith('IPython')):
del(to_be_saved[k])
continue
if type(to_be_saved[k]) in [type, types.ModuleType, types.MethodType]:
log_interactive.info("[%s] (%s) can't be saved." % (k, type(to_be_saved[k])))
del(to_be_saved[k])
try:
os.rename(fname, fname+".bak")
except OSError:
pass
f=gzip.open(fname,"wb")
for i in to_be_saved.keys():
#d = {i: to_be_saved[i]}
#pickle.dump(d, f, pickleProto)
pickle.dump(to_be_saved, f, pickleProto)
f.close()
评论列表
文章目录