加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 在循环中使用ssh执行脚本

发布时间:2020-12-16 01:52:32 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一个脚本,我有一个循环来登录到多个远程机器并在每台机器内执行一个脚本.这是一个例子: for ((j=1; j 2; j++)); do mchname="n"$j ssh -T $mchname 'ENDSSH' ./run_script input output ENDSSHdone 每当我尝试执行上面的脚本时,我得到: “警
我正在尝试编写一个脚本,我有一个循环来登录到多个远程机器并在每台机器内执行一个脚本.这是一个例子:

for ((j=1; j < 2; j++)); do 

  mchname="n"$j

  ssh -T $mchname <<'ENDSSH'    
    ./run_script < input > output &    
  ENDSSH

done

每当我尝试执行上面的脚本时,我得到:
“警告:此处 – 文档在第37行由文件结尾(想要`ENDSSH’)分隔”

我是ssh的新手,所以我确信我犯了一个愚蠢的错误.谁能建议我一个解决方案?
谢谢.

解决方法

您的bash脚本中存在问题. heredoc结束标记(脚本中的ENDSSH)不能缩进.

试试这个:

ssh -T $mchname <<'ENDSSH'    
    ./run_script < input > output &    
ENDSSH
# ^ no indentation for that line

编辑:

此外,您可以通过将其作为参数传递给ssh来运行远程系统上的命令,而不是将其作为标准输入提供.该命令将由用户的远程shell执行:

ssh -T $mchname './run_script < input > output &'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读