首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程服务器上的Bash for循环

远程服务器上的Bash for循环
EN

Stack Overflow用户
提问于 2016-11-30 20:52:46
回答 2查看 1.2K关注 0票数 0

我试图通过远程服务器上的bash脚本运行多个命令。具体来说,要在远程服务器上运行的for循环给我带来了问题。我怀疑这是因为我不知道如何正确转义字符或使用$()。

下面是密码。

代码语言:javascript
复制
ssh (user)@(server) <<EOF
sudo su - (username)
whoami
'for e in $(`ls -lrt /usr/jboss/jbosseap | awk '{print $9}' | grep multichannel`);
do
echo "$e";
done'

出于显而易见的原因,删除了用户名和服务器名。把注意力集中在for循环上。当我运行for循环命令行(没有$())时,它可以正常工作。只是不知道如何在远程呼叫中嵌套。

非常感谢所有的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-01 02:01:23

如果您有一个要运行ssh的复杂脚本,最好将该脚本放入文件中,并将该文件导入ssh,如:

代码语言:javascript
复制
cat remote_script.sh | ssh user@host

或者:

代码语言:javascript
复制
cat remote_script.sh | ssh user@host sudo -u username

现在你不用担心N级的逃逸。

票数 1
EN

Stack Overflow用户

发布于 2018-09-08 20:22:02

您可以按以下方式运行它。

在这里,文件"list“包括您的节点列表,并且脚本应该出现在所有节点中。

for i in $(cat list ) ;do ssh -o StrictHostKeyChecking=no $i "/path/your_script" ;done

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40897989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档