我正在尝试编写一个自动在Fedora上运行'dnf upgrade'的Python脚本。同样的过程在Debian等其他Linux平台上也应该是有用的。
为了处理升级过程的提示,我使用的是Python模块'pexpect'。我需要生成命令'sudo dnf upgrade',然后输入密码,如果出现'Password:'提示,然后测试'[y / N]'提示并提交'Y',最后,如果没有出现“[y / N]”选项,退出并显示“无可用更新”消息。
这是我到目前为止编写的脚本,但如果没有更新,它似乎在'[y / N]'测试失败。我不知道如何继续解析输出。
import time
import pexpect
up = pexpect.spawn('sudo dnf update')
if up.expect(['(?i)password.*']) == 0:
up.sendline('crazyhardpassword')
time.sleep(2)
else:
print("Permissions already elevated...")
if up.expect(['.*\[y/N\].*']) == 0:
up.sendline('Y')
time.sleep(2)
else:
print("No upgrade approval prompt displayed!")
if up.expect(['(?i)^nothing.*\r\nComplete!.*']) == 0:
print("No updates available...")
else:
raise AssertionError("Upgrade request failed!!!")
有关成功执行脚本的任何建议是否有更新?
谢谢。