如何在运行命令后自动重启

如何在运行命令后自动重启

我正在一堆机器上安装更新,我只想运行:

sudo apt-get update
sudo apt-get upgrade
sudo reboot

在所有机器上一次性执行所有命令(当然是在几个小时后),让它们运行而无需我输入密码。但是,上述命令不起作用,因为它们都需要 root 权限,因此每次都需要我的密码。将它们全部运行在一个sudo连接的 by下&&似乎不起作用。此外,如果更新有发行说明,它会显示任何发行说明并暂停,直到我退出less

我如何实现这个目标?

答案1

sudo -s会提示你输入一次密码,然后让你留在 root shell 中,直到你exit。在那里你可以串联命令,如apt-get update && apt-get upgrade -y && reboot

答案2

所以你不想让你的用户必须输入密码才能使用 sudo?你可以在以下位置添加一行这样的代码,/etc/sudoers或者在以下位置添加一个文件:/etc/sudoers.d/

    username  ALL=(ALL) NOPASSWD: ALL
    

    或者仅允许一些程序,如rebootapt-get

    username ALL=(ALL) NOPASSWD: /sbin/reboot, /usr/bin/apt-get
    

可能还想研究一些apt-get选项,例如:

       -q, --quiet
           Quiet; produces output suitable for logging, omitting progress
           indicators. More q's will produce more quiet up to a maximum of 2.
           You can also use -q=# to set the quiet level, overriding the
           configuration file. Note that quiet level 2 implies -y; you should
           never use -qq without a no-action modifier such as -d, --print-uris
           or -s as APT may decide to do something you did not expect.
           Configuration Item: quiet.
    
       -y, --yes, --assume-yes
           Automatic yes to prompts; assume "yes" as answer to all prompts and
           run non-interactively. If an undesirable situation, such as
           changing a held package, trying to install a unauthenticated
           package or removing an essential package occurs then apt-get will
           abort. Configuration Item: APT::Get::Assume-Yes.
    
       --force-yes
           Force yes; this is a dangerous option that will cause apt to
           continue without prompting if it is doing something potentially
           harmful. It should not be used except in very special situations.
           Using force-yes can potentially destroy your system! Configuration
           Item: APT::Get::force-yes.
    

或者你可以盲目地将几个换行符或“q”输入到 中apt-get,我曾经安装过一个包,它会忽略apt像 这样的选项-y并等待按键(可能在它的 preinst 或 postinst 脚本中)。可以尝试类似这样的操作:

    {
    sleep 20
    echo
    echo "q"
    } | apt-get upgrade
    


如果你在每台机器上都安装完全相同的软件包,则不需要通过互联网逐个进行安装,你可以使用以下命令下载一次所有必需的update文件: upgrade.deb

    sudo apt-get install --download-only [packages]
    

    或者

    sudo apt-get upgrade --download-only
    

然后从本地/​​共享文件夹安装它们

    sudo dpkg -iR /folder_of_debs
    

答案3

如果你是“root”,最简单的解决方案是

apt-get -y update && apt-get -y upgrade && reboot

如果您是系统上的用户,首先确保该用户在 sudoers 中启用,然后输入:

sudo apt-get -y update && apt-get -y upgrade && reboot

相关内容