[英]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.