SSH退出而未连接到shell脚本中的服务器

时间:2014-07-02 06:00:03

标签: linux bash unix ssh

我正在尝试连接服务器并进入每个目录。但当我尝试通过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进入服务器。任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

首先检查一下

ssh $user@$i

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

其次,我想检查一下你是否意外地使用了反对“`而不是刻度线'&#39;&#39;或双引号&#34;&#34;与

一致
`AccessIntoDirectory=`cd $directory`

会错误地运行&#39; cd&#39;命令并将其输出分配给变量。

答案 1 :(得分:1)

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

ssh -t -t $user@$i