Added a quick but useful script to compare the state of one Debian system against another.
This commit is contained in:
parent
7e68763f84
commit
edb12501bd
|
@ -0,0 +1,57 @@
|
|||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
"""Get information about the Debian packages in an older system and the current system or another system."""
|
||||
|
||||
if len(sys.argv) > 2:
|
||||
new_file_info = read_in_dpkg_listing_output_file(sys.argv[2])
|
||||
new_pkgs = parse_package_listing(new_file_info)
|
||||
else:
|
||||
packager_output, _ = gather_dpkg_package_listing()
|
||||
new_pkgs = parse_package_listing(packager_output.splitlines())
|
||||
|
||||
old_file_info = read_in_dpkg_listing_output_file(sys.argv[1])
|
||||
old_pkgs = parse_package_listing(old_file_info)
|
||||
|
||||
# Cause dicts are great, but never are they sorted
|
||||
old_pkg_names = old_pkgs.keys()
|
||||
old_pkg_names.sort()
|
||||
|
||||
print("Old packages not in new system...")
|
||||
for pkg in old_pkg_names:
|
||||
if pkg not in new_pkgs:
|
||||
print("{}\n\t\t\t\t{}".format(pkg, old_pkgs[pkg]))
|
||||
|
||||
|
||||
def parse_package_listing(listing):
|
||||
"""Parse the package listing from the given list."""
|
||||
pkg = {}
|
||||
counter = 0
|
||||
for pkg_info_line in listing:
|
||||
counter += 1
|
||||
if counter > 5:
|
||||
pkg_info = pkg_info_line.split()
|
||||
pkg_name = pkg_info[1]
|
||||
pkg_version = pkg_info[2]
|
||||
pkg[pkg_name] = pkg_version
|
||||
return pkg
|
||||
|
||||
|
||||
def gather_dpkg_package_listing():
|
||||
"""Run dpkg -l and gather in input."""
|
||||
list_pkgs_process = subprocess.Popen(["dpkg", "-l"], stdout=subprocess.PIPE)
|
||||
return list_pkgs_process.communicate()
|
||||
|
||||
|
||||
def read_in_dpkg_listing_output_file(filename):
|
||||
"""Reads in a text file with output from dpkg -l."""
|
||||
with open(filename, "r") as input_file:
|
||||
file_contents = input_file.readlines()
|
||||
return file_contents
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue