循环 EOF ssh -n 无法创建文件

Loop EOF ssh -n can't create file

希望这次不是重复的。我什么也没找到。

我的代码:

#!/bin/bash
FILE=/home/user/srv.txt
TICKET=task
while read LINE; do
    ssh -nT $LINE << 'EOF'
        touch info.txt
        hostname >> info.txt 
        ifconfig | grep inet | awk ' ~ "cast" {print }' >> info.txt
        grep -i ^server /etc/zabbix/zabbix_agentd.conf >> info.txt 
        echo "- Done -" >> info.txt
EOF
ssh -nT $LINE "cat info.txt" >> $TICKET.txt
done < $FILE #End

我的问题:

我尝试了选项 -t,也尝试了 HERE,EOF 没有' ... '但没有成功

我错过了什么吗? 谢谢你的帮助, 伊斯华伦

你有两个问题。

  • 如果您在没有 -n 的情况下调用 ssh,它可能会消耗 $FILE 输入(耗尽其标准输入)
  • 如果您使用 -n 调用 ssh,它不会读取其标准输入,因此 none 的命令将被执行

但是,第一个 ssh 的输入已重定向为来自 heredoc,因此它不需要 -n

如评论中所述,不需要第二次 ssh 调用。与其通过管道输入 info.txt 然后将其复制到本地文件,不如直接输出到本地文件:

while read LINE; do
    ssh -T $LINE >>$TICKET.txt <<'EOF'
        hostname 
        ifconfig | grep inet | awk ' ~ "cast" {print }'
        grep -i ^server /etc/zabbix/zabbix_agentd.conf
        echo "- Done -"
EOF
done <$FILE