簡體   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