如何编写 bash 脚本以使用 docker-machine 自动设置 ufw 规则?
How do I write a bash script to automate setting up ufw rules using docker-machine?
我有一个 shell 脚本,如下所示:
echo "======> setting up firewall rules for ..."
docker-machine ssh \
echo "y" | sudo ufw --force enable \
&& sudo ufw default deny incoming \
&& sudo ufw allow 22/tcp \
&& sudo ufw allow 2376/tcp \
&& sudo ufw allow 2377/tcp \
&& sudo ufw allow 7946/tcp \
&& sudo ufw allow 7946/udp \
&& sudo ufw allow 4789/udp \
&& sudo ufw reload \
&& sudo systemctl restart docker
每个 ufw 命令 运行 后的日志记录信息显示 "Skipping adding existing rule" 即使这是一个全新的实例。我可以手动 ssh 进入 Docker 机器实例和 运行 相同的命令,没有任何问题。如何编写 bash 脚本以使用 docker-machine 自动设置 ufw 规则?
docker-machine ssh
命令的行为类似于标准 ssh
命令,即它接受远程 运行 的命令。
但是,在您的示例中,shell 运算符(例如 |
和 &&
优先 ,即它们终止 [= docker-machine ssh
收到的 33=]。
解决此问题的一种方法是引用您希望 docker-machine ssh
接收的命令列表,例如:
$ docker-machine ssh \
'echo "y" | sudo ufw --force enable \
&& sudo ufw default deny incoming \
&& sudo ufw allow 22/tcp ... '
另一种选择是转义所有 shell 运算符(\|
和 \&\&
,甚至 \(
、\{
、\;
等).
我有一个 shell 脚本,如下所示:
echo "======> setting up firewall rules for ..."
docker-machine ssh \
echo "y" | sudo ufw --force enable \
&& sudo ufw default deny incoming \
&& sudo ufw allow 22/tcp \
&& sudo ufw allow 2376/tcp \
&& sudo ufw allow 2377/tcp \
&& sudo ufw allow 7946/tcp \
&& sudo ufw allow 7946/udp \
&& sudo ufw allow 4789/udp \
&& sudo ufw reload \
&& sudo systemctl restart docker
每个 ufw 命令 运行 后的日志记录信息显示 "Skipping adding existing rule" 即使这是一个全新的实例。我可以手动 ssh 进入 Docker 机器实例和 运行 相同的命令,没有任何问题。如何编写 bash 脚本以使用 docker-machine 自动设置 ufw 规则?
docker-machine ssh
命令的行为类似于标准 ssh
命令,即它接受远程 运行 的命令。
但是,在您的示例中,shell 运算符(例如 |
和 &&
优先 ,即它们终止 [= docker-machine ssh
收到的 33=]。
解决此问题的一种方法是引用您希望 docker-machine ssh
接收的命令列表,例如:
$ docker-machine ssh \
'echo "y" | sudo ufw --force enable \
&& sudo ufw default deny incoming \
&& sudo ufw allow 22/tcp ... '
另一种选择是转义所有 shell 运算符(\|
和 \&\&
,甚至 \(
、\{
、\;
等).