我在远程服务器上工作,每次在网络配置方面搞砸了什么的时候,进入救援模式都是一个痛苦的过程。
有没有办法实现类似这样的事情:
Netplan apply /customscript.yaml
我可以在排除网络配置故障时使用它。因此,如果我进行冷重启,服务器将恢复其“默认设置”。
答案1
Bionic 中有一种新方法可以实现这一点:netplan try
。
就你的情况来说,netplan try --config-file foo.yaml
应该做你想做的事。
该手册页没有什么帮助,因为它主要描述了配置文件格式,但是--help
却给你提供了该工具的相当好的概述:
ubuntu@netplan:~$ netplan try --help
usage: /usr/sbin/netplan try [-h] [--debug] [--config-file CONFIG_FILE]
[--timeout TIMEOUT]
Try to apply a new netplan config to running system, with automatic rollback
optional arguments:
-h, --help show this help message and exit
--debug Enable debug messages
--config-file CONFIG_FILE
Apply the config file in argument in addition to
current configuration.
--timeout TIMEOUT Maximum number of seconds to wait for the user's
confirmation
答案2
首先我创建了一个 sh 脚本,将其放在 /etc/netplan/ 中并将其命名为 backup.sh
#!/bin/sh
# -q quiet
# -c nb of pings to perform
ping -q -c5 aa.bb.cc.dd > /dev/null
if [ $? -eq 0 ]
then
: #do absolutly nothing! server can ping its external IP.
else
# restore, working config to netplan.
cp -f /etc/netplan/02-netcfg.yaml /etc/netplan/01-netcfg.yaml
# apply network config.
netplan apply
fi
如果我无法 ping 服务器 IP,此脚本会将我所做的更改恢复为存储在 02-netcfg.yaml 中的有效配置设置。我已使用 aa.bb.cc.dd 屏蔽了我的服务器 IP 地址,因此您必须将其替换为要 ping 的 IP,以便执行 if 中的“else”。
然后我将此脚本设置为每次服务器重启时运行,并为其启用一个 Cron 作业,当我进行网络配置时,该作业每 3 分钟运行一次。