需要通过 ssh 获取命令信息以及文件的输入

需要通过 ssh 获取命令信息以及文件的输入

我正在编写一个脚本,使用 inf while 和 for 循环来获取远程计算机的命令信息。 PFB 脚本。但脚本仅以给出单个命令信息结束。我在这个文件中有多个命令(CMDS=$HOMEDIR/cmnd.txt)。如果我不使用 ssh,所有命令都可以正常工作,但是当我使用 ssh 时,它只执行第一个命令。

#!/bin/bash
HOMEDIR=/home/448130
CMDS=$HOMEDIR/cmnd.txt
while read -r line
do
  for i in $(cat hostname.txt);
  do
    echo "*****************************  $line output begins  ********************************";
    #echo $line
    ssh $i $line
    echo "*****************************  $line output ends  ********************************";
  done
done < $CMDS

请帮我解决这个问题。

答案1

当您运行时ssh,标准输入将传递给远程命令。远程命令实际上并没有对其执行任何操作,但本地ssh进程无法知道。为了避免这种情况,由于您不想将任何输入传递给远程命令,因此请将输入重定向ssh/dev/null

别忘了双引号变量替换

而 IFS= 读取 -r 行
  for i in $(cat hostname.txt);
    echo "***************************** $行输出开始**************** *****************”;
    #回声$行
    ssh“$i”“$line”</dev/空
    echo "***************************** $行输出结束**************** *****************”;
  完毕
完成<“$CMDS”

相关内容