SSH exited without connecting to server in shell script
我正在尝试将服务器和CD连接到每个目录中。但是当我尝试ssh进入第一个服务器(即server1)时,它给我的错误是
Pseudo-terminal will not be allocated because stdin is not a terminal.
这是下面的配置文件和bash脚本:
GETPARCHEC.CFG
1 2 3 | SERVERLIST="server1;server2" USERNAME=bob DIRECTORY=/net/bob |
抨击脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/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到服务器中,cd到我想要的目录中,但是它退出了,没有ssh到服务器中。任何帮助都会很好!
不使用控制台(tty)而使用ssh命令的解决方案是添加-t-t选项。
1 | ssh -t -t $user@$i |
首先检查线路
1 | ssh $user@$i |
它不提供命令,因此脚本尝试在远程主机上启动交互式shell。这就是错误的来源。
其次,我想检查一下您是否在
1 | `AccessIntoDirectory=`cd $directory` |
它将错误地运行"cd"命令并将其输出分配给变量。