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