每次启动后都设置主机名吗?

每次启动后都设置主机名吗?

我正在研究每次启动机器时在 Arch Linux 系统(笔记本电脑)上设置主机名的可能性。顺便说一句,我不使用任何显示管理器,而只是启动(使用 syslinux)到终端登录提示符。在命令行登录后,我运行startx以启动 GUI。

我想在终端登录过程完成后运行一个脚本,该脚本将询问我是否要修改主机名。回答“否”将允许使用 /etc/hostname 中设置的主机名,而回答“是”将运行hostname somehostname(或hostnamectl set-hostname 'somehostname'或)。因此,要清楚的是,理想情况下,脚本将在我在 tty 上输入登录凭据之后但在我从登录的 ttyecho somehostname > /proc/sys/kernel/hostname运行命令之前触发。startx

我已经尝试过创建一个脚本来执行此操作。到目前为止,它并不是像我希望的那样仅在登录时触发,而是每次我打开终端时都会触发(我尝试从 ~/.bash_profile 触发它)。但在尝试解决该问题之前,我需要首先确定这样做是否可取/可行。如果能提供意见,我将不胜感激。

PS 我之所以考虑这样做,是因为我有时会使用一个 wifi 网络,该网络会阻止我用于连接家用机器的端口。因此,在使用该网络时,我已采取通过该网络上开放且有效的端口 443 将流量隧道传输到我的家用计算机。但我确实发现自己有时会被启动离线 - 我怀疑是因为我通过端口 443 路由的流量在网络管理员看来可能很可疑。因此,我正在尝试 MAC 欺骗和/或主机名修改,看看这是否可以防止我断开连接。

答案1

最简单的解决方法和最少的开发(因为您已经编写了某种形式的脚本)是让该脚本在tmpfs文件系统中写入临时文件并检查其是否存在。

1.您启动机器并登录。脚本通过 执行bash_profile。脚本检查 是否存在/tmp/hostname_changed,如果不存在 - 它会提示您是否要更改主机名。
2.你回答是的,脚本会改变主机名,然后创建文件/tmp/hostname_changed(该文件可以为空)。
3.现在,当您打开终端时,脚本将检查临时文件是否存在,并且由于它已经创建,脚本将退出而不询问您任何内容。

一个简单的 bash 示例:

#!/bin/bash

if [ -f /tmp/hostname_changed ]; then
    # prompt for hostname change
    # if yes:
    # change hostname
    echo > /tmp/hostname_changed
    # if not, exit
fi

相关内容