我想打开一些端口
for i in centos7{3..4};do ssh -T $i "for ir in 53 80 443 3000 3306 5910-5930 5432 8140 8443 10090-10100 20 21;do firewall-cmd --permanent --zone=public --add-port=$ir/tcp;done"; done
返回
Error: INVALID_PORT
Error: INVALID_PORT
Error: INVALID_PORT
Error: INVALID_PORT
该命令很好,因为如果我在单个主机上执行单个命令返回
success
success
success
success
success
success
success
success
success
问题是,如何在 ssh 上传递多个变量?
答案1
$ir
正在由本地 shell 进行扩展,而不是按照您在远程端的预期进行扩展。尝试转义$
:… --add-port=\$ir/tcp …
或者使用单引号而不是双引号,因为您不希望命令中的任何内容在本地扩展。