python pexpect dnf升级自动化

时间:2018-02-18 05:04:31

标签: python automation pexpect

我正在尝试编写一个自动在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!!!")

有关成功执行脚本的任何建议是否有更新?

谢谢。

0 个答案:

没有答案