如果出现故障,如何回滚通过 SSH 完成的网络配置更改?

Mar*_*tin 5 command-line networking ssh remote

我即将iptables通过 SSH更改配置和接口速度以及双工设置。在主机无法访问的情况下回滚更改的可能性有哪些?我想很简单:

ip addr add 10.10.10.1/24 dev eth0; ping -c1 8.8.8.8 || ip addr add 192.168.1.1/24 dev eth0
Run Code Online (Sandbox Code Playgroud)

..有点风险,因为如果 SSH 连接在 IP 地址更改后立即断开,那么 shell 也应该被杀死并且ping -c1 8.8.8.8 || ip addr add 192.168.1.1/24 dev eth0永远不会执行部分?应该crontab在远程主机上发生危险更改的情况下使用吗?还有什么巧妙的方法吗?

D_B*_*Bye 10

screenortmux会话中,设置一个 shell,它会在延迟后撤销您的更改。我对 一无所知iptables,所以对此无能为力,但是在更改 FreeBSD 上的实时防火墙配置时,这样的事情已经多次挽救了我众所周知的培根:

# In one `screen` or `tmux` window
% sleep 60 && <command to reverse changes>
Run Code Online (Sandbox Code Playgroud)

在另一个窗口中,您现在可以进行更改,如果它们有效,您可以终止sleep. 请注意,因为我们正在使用&&,所以当您杀死 时,将不会运行撤销更改的命令sleep

如果您的更改不起作用,请等待几秒钟,您的退出命令将运行。

  • 实际上,在通过 ssh 工作时使用 `screen` 或 `tmux` 总是一个好主意,因为如果由于某种原因连接断开,您正在运行的应用程序将不会收到 `SIGPIPE` 并死掉,而且您可以随时重新连接 (2认同)