AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题

问题[automation](ubuntu)

Martin Hope
Eric Chang
Asked: 2022-06-14 06:09:27 +0800 CST

如何使用交互式部分自动重启?

  • 0

自动安装与自定义用户数据完美运行,但安装完成后不会自动重启。

我在https://ubuntu.com/server/docs/install/autoinstall-reference中找不到有关重新启动的文档

我还在这里找到一篇文章http://junyelee.blogspot.com/2021/05/subiquity.html

# use interactive-sections to avoid an automatic reboot

这是我的用户数据

#cloud-config
autoinstall:
  ### config storage and network manually
  interactive-sections:
    - storage
  # Swapfile on root volume
  swap:
    swap: 16GB
  late-commands:
    - curtin in-target --target=/target -- apt-get --purge -y --quiet=2 remove byobu
    - curtin in-target --target=/target -- apt-get install -y git wget curl rsync net-tools ssh ubuntu-desktop plymouth-theme-ubuntu-logo grub-gfxpayload-lists mailutils
    - curtin in-target --target=/target -- hostnamectl set-hostname ubuntu-jammy.abc.com
  # Write a script that can take care of some post install setup "late-commands" cannot be interactive unfortunately"
    - |
      cat <<EOF | sudo tee /target/etc/finish-install-setup.sh
      #!/usr/bin/env bash
      echo *************************
      echo ****  Finish Setup   ****
      echo *************************
      echo 'Enter the hostname for this system: '
      read NEW_HOSTNAME
      hostnamectl set-hostname \${NEW_HOSTNAME}
      echo
      echo 'Enter the timezone for this system: '
      echo 'Asia/Taipei'
      read NEW_TIMEZONE
      timedatectl set-timezone \${NEW_TIMEZONE}
      echo *************************
      echo
      echo *************************
      echo 'Restarting to finish ...'
      shutdown -r 3
      EOF
    - curtin in-target --target /target chmod 744 /etc/finish-install-setup.sh
  apt:
    disable_components: []
    geoip: true
    preserve_sources_list: false
    primary:
    - arches:
      - amd64
      - i386
      uri: http://free.nchc.org.tw/ubuntu
    - arches:
      - default
      uri: http://ports.ubuntu.com/ubuntu-ports
  drivers:
    install: false
  identity:
    hostname: ubuntu-jammy
    password: somesupersecretpasswordhere
    realname: administrator
    username: administrator
  kernel:
    package: linux-generic
  keyboard:
    layout: us
    toggle: null
    variant: ''
  locale: en_US.UTF-8
  network:
    ethernets:
      ens18:
        dhcp4: true
    version: 2
  ssh:
    allow-pw: true
    authorized-keys: []
    install-server: true
  ### user-data , commands run during first boot
  user-data:
    runcmd:
      - rm -rf  /usr/bin/python
      - ln -s /usr/bin/python3.10 usr/bin/python
      - wget https://download.nomachine.com/download/7.8/Linux/nomachine_7.8.2_1_amd64.deb -O /opt/nomachine.deb
      - dpkg -i /opt/nomachine.deb
      #- /etc/finish-install-setup.sh
  version: 1

我必须在最后按回车键重新启动机器,我认为这不是一个好的“自动化”。

但是我需要手动配置存储布局,有没有安装完成后强制重启的解决方案?

automation
  • 1 个回答
  • 92 Views
Martin Hope
Nicolas
Asked: 2020-12-31 10:16:12 +0800 CST

如何自动每页打印多张图像?

  • 1

使用 Ubuntu linux,每页打印多个图像的最佳/最简单方法是什么?

应动态选择图像和页面的全局数量以及每页请求的图像数量。

automation
  • 2 个回答
  • 406 Views
Martin Hope
Max Luedemann
Asked: 2020-11-19 00:23:55 +0800 CST

在不同文件夹中连续执行两个命令

  • -1

我对 ubuntu 真的很陌生,我有一个小问题。

我有两个不同的命令,每个命令必须重复 4 次(因此总共执行 8 次)

这些 CommandA.sh 和 CommandB.sh 始终位于它们的工作目录中(每个工作目录都在准备文件夹中的文件进行处理)

那么我怎样才能编写一个技术上的 bash 命令:

  1. “进入”第一个工作目录

  2. 执行 CommandA.sh

  3. 等到 CommandA.sh 完成

  4. 执行 CommandB.sh

  5. 等到 CommandB.sh 完成

  6. “进入”第二个工作目录

  7. 重做步骤 2-5

  8. “进入”第三个工作目录

冲洗并重复最后一个工作文件夹....

这是“容易”可行的,还是需要大量的脚本?

谢谢你的帮助 !

真诚的 麦克斯

scripts automation
  • 1 个回答
  • 42 Views
Martin Hope
Marian Rainer-Harbach
Asked: 2020-11-14 07:20:27 +0800 CST

如何通过 PXE 网络引导和自动安装来安装当前的 Ubuntu 版本?

  • 13

从 Ubuntu 20.10 (Groovy Gorilla) 开始,Canonical 不再提供netboot.tar.gz包和mini.iso镜像。它们以前可用于通过 PXE 引导系统并通过预置配置自动运行 Debian 安装程序。

从 20.10 开始的 Ubuntu 版本如何通过 PXE 引导自动安装?

system-installation boot automation pxe preseed
  • 2 个回答
  • 13057 Views
Martin Hope
LuxZg
Asked: 2020-11-09 05:53:34 +0800 CST

基于 MAC 获取自动安装

  • 2

短的:

我正在寻找一种 PXE 引导 Ubuntu 20.04 的方法,并使用新的自动安装进行完全无人值守的安装。但我希望user-data根据客户端的 MAC 在服务器端修改 YAML

我发现了什么

  • 我有启动内核选项,nocloud-net;s=http://...但我看不到将自定义字符串作为 URL 的一部分发送(或完全基于本地 MAC 更改 URL)的方法
  • 我看到early-commands哪个说autoinstall运行后会刷新,但我没有产生任何有效的方法来使用它来将修改后的数据注入新的自动安装;例如。然后执行wget http://myurl/$MAC该文件并修改已经运行的自动安装
  • 使用late-commands是最后的选择,我确实可以这样做wget http://myurl/$MAC && .. && ... 。设置静态 IP/GW/网络掩码,但似乎更容易出错
  • 编辑:似乎我可以有另一种方式,但也需要在我预期的 Web 管理之外进行手动处理,即为每个客户端提供不同的 pxelinux.cfg 并更改其中的 URL,但这是通过 TFTP 提供的,因此没有服务器端脚本(除非有解决方法?) Edit#2:这可以工作,将 TFTP 和 HTTP 服务器指向同一个文件夹,并告诉 PHP 在 /pxelinux.cfg/AA-BB-CC-DD-EE- 下生成自定义文件01 ... -02 ... -03 .. 等用于我的数据库中的每个 MAC,并在保存 DB 中的条目时检查/重新生成文件。至少保持单一管理点的概念。但如果有人知道更好的解决方案,我会留下问题(见上面的选项)

最终目标

我想要一个“主”PXE 服务器,它是 HTTPS 服务器和 Web 管理的所在地,在那里我可以有一个包含所有设备的表(例如在 MySQL 中),以及与每个设备相关的所有设置。然后,当我们部署新客户端(主要是一些愚蠢的信息亭之类的东西)时,我会选择它们的 MAC,启用 PXE 引导,标记它们,然后将它们发送到远程位置。该 MAC 和位置将通过 Web 管理输入 MySQL,以及静态 IP、GW、DNS、浏览器主页、屏幕旋转等内容。一旦它们到达并有人连接它们,它们将启动到无人值守的 PXE 安装,通过它,在处理过程中,他们将从 Web 服务器中提取配置(例如user-data,实际上将由 PHP 处理,并根据需要注入所需的配置),它会 - 嗯......只是工作。它可以适用于live图像也是如此,只是以不同的方式。

我大部分时间都坚持autoinstall和nocloud-net启动,一开始看起来很棒,我可以为每个客户端提供一个自定义的无人值守文件,除了我无法从另一个客户端识别一个客户端的事实。获取http://myserver/user-data?AA-BB-CC-DD-EE-FF似乎不在规范中,仅通过 IP 选择它是行不通的,因为那些将是随机的 DHCP,不幸的是,使用 DHCP 保留修复它是一场噩梦,因为我们正在谈论 100 多个位置,每个位置都有自己的本地DHCP等

我的想法已经不多了,所以希望有人能加入。任何能让我前进的想法(来自late-commands)都会很棒!它不必是 MAC,也可以是 UIID 或其他一些硬件 ID(序列号等),但它应该是唯一且易于获取的。MAC通常是盒子外面的贴纸。

哦,如果你想知道我为什么这么反对late-commands......好吧.. 事情是我不反对它,只是动态修改无人参与的文件会更加灵活。我可以从一开始就设置主机名、IP、用户名、密码、磁盘大小等等。比使用某些默认值引导更干净,然后尝试使用 bash 脚本尝试修复它(特别是磁盘/分区)。毕竟,这就是为什么我们首先要有autoinstall脚本,而不是在第一次启动后重新执行所有操作。

automation pxe user-data
  • 3 个回答
  • 2172 Views
Martin Hope
walter nunez
Asked: 2020-08-07 11:19:01 +0800 CST

incrontab 未在 cron sh 调用结束时触发

  • 1

我有这个 incrontab,它正在监视master目录以检查事件是否发生在此处放置新文件的位置......并运行 php 文件。

/var/www/html/docs/int/master IN_MOVE php /var/www/html/shscript/work.php

我有一个每分钟运行一次的 crontab,并调用.sh文件的执行,这个 SH 的内容是将 txt 文件复制到上一个 incrontab 中的主目录(效果很好):

cd /mnt/test1/int/master
cp *.txt /var/www/html/docs/int/master

问题:

当 cron 运行结束(复制成功),但 icron 没有触发,没有检测到如下事件:IN_MOVE, IN_MOVED_TO;但如果我将事件更改为:IN_MODIFY; 运行良好并执行php文件;但我不需要在修改事件上运行 php 文件,如果文件成功复制,我需要运行它。 我不知道我做错了什么。

automation bash cron incron
  • 1 个回答
  • 204 Views
Martin Hope
Maddu Swaroop
Asked: 2020-07-26 20:25:04 +0800 CST

将所有具有相同扩展名的文件移动到一个文件夹

  • 1

我知道我可以使用类似的东西, mv *zip zip/但如果不存在,我想自动创建每个文件夹并将我的所有文件移动到它们。使用下面的代码,我必须对所有内容进行硬编码。有没有办法自动化这个。就像首先获取文件的所有扩展名,然后创建文件夹(如果不存在)并根据文件类型将文件移动到其中,例如 png 到图像/png 和 mp3 到音频/mp3 或 pdf 到 Documents/pdf。

find . -name "*.mp4" -exec mv "{}" ./Videos \;

在此处输入图像描述

Edit-1 我已经想通了,但我不想移动 .sh 文件如何从特定元素的数组中删除,并将 png、jpg 到 images/png、images/jpg 和 mp3 到 Audio/mp3 或pdf 到文档/pdf。

array=($(find . -type f | sed 's/.*\.//' | sort | uniq ))

for dir in "${array[@]}"; do
        [[ ! -d "$dir" ]] && mkdir "$dir"
        find . -name "*.$dir" -exec mv "{}" ./"$dir" \;
done
automation files
  • 2 个回答
  • 1039 Views
Martin Hope
math3r0se
Asked: 2020-07-07 00:27:19 +0800 CST

自定义 FAI Ubuntu 20.04

  • 0

我知道FAI工具可以创建全自动和可定制的 Debian 安装映像,我喜欢它。

但目前它不提供 Ubuntu 的工具,这很可悲。

我很想创建一个 Ubuntu 20 的映像,它会自动安装我想要的所有设置,比如 FAI,但我不知道该怎么做。

你知道用 GUI来创建这种图像的简单解决方案吗?我发现的所有讨论它的论坛都是很久以前的。

如果没有,这种项目是否有足够清晰的文档?我很讨厌在网上搜索^^

提前谢谢你:D

system-installation automation custom-installer
  • 1 个回答
  • 256 Views
Martin Hope
gumlozol
Asked: 2020-07-03 06:08:39 +0800 CST

Ubuntu 20.04 自动安装 LUKS

  • 2

由于将来我将不得不处理 Ubuntu 客户端的大规模部署,因此我一直在寻找实现无人值守设置的方法。我目前的想法是使用 kickstart 或https://ubuntu.com/server/docs/install/autoinstall之类的东西,并在初始部署后使用 ansible。

一个关键要求是在设置期间加密根分区。

由于自动安装似乎是 20.04 的新标准,我在参考资料中没有找到任何关于 LUKS 的内容,所以我想问是否有人知道 LUKS 是否可以与自动安装一起使用?

如果不是:kickstart 会是正确的方法吗?

automation luks kickstart 20.04
  • 1 个回答
  • 2608 Views
Martin Hope
yaobin
Asked: 2020-06-04 16:18:03 +0800 CST

我对`debconf-set-selections`的预配置文件中的“di”的含义感到困惑

  • 0

我正在使用 Ubuntu 18.04,我正在通过apt install.

这个软件包要求我查看许可协议并选择接受或拒绝它,我了解到我可以使用“预置”来自动化这个过程,这在“附录 B. 使用预置自动化安装”中进行了讨论。

“B.3. 创建预配置文件”部分对该Owners字段进行了如下说明:

对于仅在安装程序本身中使用的 debconf 变量(模板),所有者应设置为“di”;要预置已安装系统中使用的变量,应使用包含相应 debconf 模板的包的名称。只有所有者设置为“di”以外的变量才会传播到已安装系统的 debconf 数据库。

我的问题是:

  1. “安装程序”和“已安装系统”有什么区别?
  2. 我apt用来安装这个包。这是“安装程序”案例吗?
  3. debconf 数据库是什么?从我到目前为止所学到的,它是文件/var/cache/debconf/config.dat. 我对吗?
  4. 最后一句“...'di'将被传播到已安装系统的debconf数据库”让我觉得如果我使用apt安装包并d-i在preseed文件中使用,config.dat文件不会被我的安装更改. 但是在我运行之后debconf-set-selections <my-preseed-file>,我发现config.dat文件被更改了。所以我对这部分文件的确切含义感到困惑。

谢谢您的帮助!

automation apt preseed debconf
  • 1 个回答
  • 370 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve