setting up firewall rules for $1 ..." docker-machine ssh $1 \ echo "-6ren">
gpt4 book ai didi

bash - 如何编写bash脚本以使用docker-machine自动设置ufw规则?

转载 作者:行者123 更新时间:2023-12-02 19:34:54 24 4
gpt4 key购买 nike

我有一个如下的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运算符( \|\&\&,甚至 \(\{\;等)。

关于bash - 如何编写bash脚本以使用docker-machine自动设置ufw规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46652082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com