繁体   English   中英

如何编写 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 $1 ..."   
docker-machine ssh $1 \
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 命令后的日志信息显示“跳过添加现有规则”,即使这是一个全新的实例。 我能够手动 ssh 进入 Docker 机器实例并毫无问题地运行相同的命令。 如何编写 bash 脚本以使用 docker-machine 自动设置 ufw 规则?

docker-machine ssh命令的行为类似于标准的ssh命令,即它接受远程运行的命令。

但是,在您的示例中, shell 运算符如| &&优先,即它们终止docker-machine ssh接收的命令/参数列表。

解决此问题的一种方法是引用您希望docker-machine ssh接收的命令列表,例如:

$ docker-machine ssh $1 \
'echo "y" | sudo ufw --force enable \
&& sudo ufw default deny incoming \
&& sudo ufw allow 22/tcp ... '

另一种选择是转义所有 shell 运算符( \\|\\&\\& ,甚至\\(\\{\\;等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM