
Для работы мне нужно подготовить много ПК. Мне нужно засунуть кучу sudo apt-get install
команд в терминал - это довольно утомительно. Я мог бы, наверное, поместить их все в скрипт sh (возможно), но некоторые команды требуют добавления нового репозитория ( sudo add-apt-repository
) или добавления нового ключа (??) через gpg
команду - и они требуют, чтобы пользователь нажал ENTER.
Есть ли способ сказать "да" всем или что-то в этом роде? Это, вероятно, потребует добавления некоторых опций в команды apt-get и gpg?
решение1
Вы можете добавить флаги --assume-yes
и --force-yes
, чтобы автоматически ответить «да» всем.
sudo apt-get --assume-yes --force-yes install <packagename(s)>
Чтобы сделать эти изменения постоянными, отредактируйте /etc/apt/apt.conf
и добавьте строки
APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";
Это то, что есть на странице руководстваapt-get
говорит -
-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.
решение2
За исключением индивидуальной установки предварительно настроенной системы, я бы, вероятно, использовал сценарий установки, запускаемый на каждой системе.
Для каких команд нужно нажать Enter? add-apt-repository
В справке указана такая -y
опция:
$ sudo add-apt-repository --help
Usage: add-apt-repository [options] repository
Options:
-h, --help show this help message and exit
-y, --yes force yes on all confirmation questions
Ссылка на справку ниже говорит, что для добавления PPA "Если требуется и доступен открытый ключ, он автоматически загружается и регистрируется". Также есть пакеты вроде ubuntu-keyring
, ubuntu-extras-keyring
, linuxmint-keyring
и т. д., которые содержат ключи для различных репозиториев. И man gpg
должно рассказать, как заставить его автоматически установить ключ, если вы застряли с его использованием.
И/или вы можете редактировать sources.list
файлы напрямую с помощью sed
/ awk
, или, если системы идентичны, просто скопируйте "готовые" файлы.
Эта страница справки Ubuntu содержит больше информации окак управлять репозиториями программного обеспечения из командной строки.
И если вы готовите много систем, могу ли я предположить, что вы будете загружать пакеты .deb только один раз и устанавливать их все на каждую машину, вместо того, чтобы обновлять и загружать их все для каждой системы? Если у вас все .deb в одной папке, эта команда установит их все:
sudo dpkg -iR [deb-directory]
FYI, я видел один странный пакет, который ждал enterдо завершения установки, по-видимому, он был внутри одного из своих собственных скриптов конфигурации, и даже apt-get
's --force-yes
не работали с ним. У вас ведь нет ничего такого, не так ли?
Или, если вы намерены простопринудительное нажатие нескольких клавишв терминал telnet (должен работать и для других методов), вы можете использовать скрипт bash, например такой:
{
echo "open 192.168.55.55"
sleep 0.5
echo "$login"
sleep 0.5
echo "$password"
sleep 0.5
echo "command1"
sleep 2
echo " "
sleep 5
echo "exit"
} | telnet
Использование разного времени сна для задержек между «набором текста», повтором пробела " "
или даже просто echo должно отправлять «возврат» новой строки.