SSH在没有连接到shell脚本中的服务器的情况下退出

我正试图连接到服务器,并进入每个目录。 但是当我尝试SSH到第一台服务器server1时 ,它给我的错误是

伪终端不会被分配,因为stdin不是终端。

这是下面的配置文件和bash脚本:

getPatches.cfg

SERVERLIST="server1;server2"
USERNAME=bob
DIRECTORY=/net/bob

bash脚本

#!/bin/sh

CFGFILE=getPatches.cfg

if ! [ -f $CFGFILE ] ; then
   echo "ERROR: $CFGFILE configuration file is missing"
   exit 1
fi
# READ $CFGFILE
. $CFGFILE
servers=$SERVERLIST
user=$USERNAME
directory=$DIRECTORY

#Tokenize ServerList
while IFS=';' read -ra ADDR; do
        for i in "${ADDR[@]}"; do
                ssh $user@$i
                AccessIntoDirectory="cd $directory"
                export AccessIntoDirectory
                ssh -q $i $AccessIntoDirectory
        done
done <<< "$servers"

我已经生成了一个SSH公钥,这个脚本应该做的是SSH进入服务器,并进入我想要的目录,但是它退出了,而没有SSH进入服务器。 任何帮助将是伟大的!


不使用控制台(tty)而使用ssh命令的解决方案是添加-t -t选项。

ssh -t -t $user@$i

首先检查线路

ssh $user@$i

它不提供命令,因此脚本会尝试在远程主机上启动交互式shell。 这就是你从中得到错误的地方。

其次,我想检查你是否意外地使用了反引号``而不是'蜱'或双引号“”

`AccessIntoDirectory=`cd $directory`

这会错误地运行'cd'命令并将其输出分配给变量。

链接地址: http://www.djcxy.com/p/97135.html

上一篇: SSH exited without connecting to server in shell script

下一篇: Allocate terminal with child