Skip to content
Snippets Groups Projects
Commit 4652c736 authored by Indraneel Acharya's avatar Indraneel Acharya
Browse files

deleted

parent e8829699
No related branches found
No related tags found
1 merge request!1Neelbranch
import subprocess
import json
def get_dnf_check_update():
try:
# Run dnf check-update command and capture the output
cmd = ['dnf', 'check-update', '--quiet']
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
stdout, stderr = process.communicate()
# Check for errors
if process.returncode != 0:
raise Exception(f"Error running dnf check-update: {stderr}")
# Process the output and convert it to a dictionary
updates = {}
for line in stdout.strip().split('\n'):
package_info = line.split()
package_name = package_info[0]
package_version = package_info[1]
updates[package_name] = package_version
return updates
except Exception as e:
print(f"Error: {e}")
return None
if __name__ == "__main__":
# Call the function to get the updates as a dictionary
updates_dict = get_dnf_check_update()
if updates_dict:
# Print the updates dictionary
print(json.dumps(updates_dict, indent=4))
import subprocess
import os
command = "dnf check-update"
def is_command(name):
from shutil import which
return which(name) is not None
if not is_command("sendmail"):
print("sendmail could not be found, installing now")
subprocess.check_call(["sudo", "dnf", "install", "-y", "sendmail"])
else:
print("sendmail is already installed")
process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
(output, err) = process.communicate()
output = output.decode('utf8').split("\n")
formatted_output = ""
package_size = 0
for line in output:
parts = line.split()
if len(parts) == 3:
package_size += 1
formatted_line = f"Package: {parts[0]}\nVersion: {parts[1]}\nOS: {parts[2]}\n"
formatted_output += formatted_line
formatted_output += '---------------------------------------------------\n'
else:
formatted_output += line
formatted_output += "\n"
formatted_output += f"Packages can be upgraded: {package_size}\n"
with open('output.txt', 'w') as f:
f.write(formatted_output)
#emails = ['jc121@illinois.edu', 'yulin4@illinois.edu', 'aaravs2@illinois.edu', 'iaa6@illinois.edu', 'rriddle2@illinois.edu', 'cip2023summer@outlook.com']
emails = ['iaa6@illinois.edu']
subject = 'DNF Check Update Output'
from_email = 'cip2023summer@gmail.com'
sendmail_command = f"echo 'Subject: {subject}\nFrom: {from_email}\nTo: {', '.join(emails)}\n\n{formatted_output}' | /usr/sbin/sendmail -t"
process = subprocess.Popen(sendmail_command, stdout=subprocess.PIPE, shell=True)
import subprocess
def parse_packages(output_string):
package_dict_list = []
package_lines = output_string.strip().split("\n\n")
keep_if = ["Release", "Name","Summary","Repository", "Version"]
for package_info in package_lines:
package_details = package_info.split("\n")
package_dict = {}
for detail in package_details:
if ":" in detail:
key, value = detail.split(":", 1)
if key.strip() in keep_if:
if "Release" in key:
package_dict["Version"] +="-"+ value.strip()
continue
package_dict[key.strip()] = value.strip()
package_dict_list.append(package_dict)
return package_dict_list
# Replace 'dnf', 'info', and '--updates' with the actual command and its arguments
command = ['dnf', 'info', '--updates']
result = subprocess.run(command, capture_output=True, text=True)
output_string = result.stdout
final_dict = parse_packages(output_string)
formatted_output=""
for package in final_dict:
command_for_installdate = ['rpm', '-q','--queryformat', '%{INSTALLTIME:date}', '--last', package["Name"]]
result = subprocess.run(command_for_installdate, capture_output=True, text=True)
output_string = result.stdout
package["Install Date"] = output_string.strip()
command_for_version = ['rpm', '-q','--queryformat', '%{Version}-%{Release}', package["Name"]]
result = subprocess.run(command_for_version, capture_output=True, text=True)
output_string = result.stdout
package["Current Version"] = output_string.strip()
for key,val in package.items():
formatted_output +=key +"\t: " + val +"\n"
formatted_output +="-"*80 +"\n"
print(formatted_output)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment