我正在尝试SSH
到服务器并在目标服务器上执行一些命令。
以下是我的代码
!/bin/ksh
ssh user@pass <<EOF
how to wait ?
DIR_INPUT=/home/
LOGS=
echo "Enter Deployment Date (YYYYMMDD e.g 20150631)"
read DDATE
DDATE=`echo $DDATE | sed s/[^0-9]*//g`
echo "$DDATE"
MGT=`echo "$DDATE" | cut -c5-6 2>/dev/null`
DGT=`echo "$DDATE" | cut -c7-8 2>/dev/null`
LEQ=`echo ${#DDATE}`
echo $MGT
echo $DGT
echo $LEQ
if [ "$MGT" -gt 12 ] || [ "$DGT" -gt 31 ] || [ "$LEQ" -gt 8 ] || [ "$LEQ" -lt 8 ] || [ "$MGT" -eq 0 ] || [ "$DGT" -eq 0 ]
then
echo "INVAILID DATE"
exit 1
fi
echo "$DDATE"
cd $DIR_INPUT
EOF
在SSH
到服务器之后,有一些预定义的文本在服务器上回显,因此,与SSH
相关联的命令在其他服务器的终端到来之前执行。
有没有办法放置命令,等待某段时间直到ssh连接没有完全建立?
答案 0 :(得分:0)
您可以尝试使用-T
选项运行ssh,以防止它在远程系统上分配TTY:
ssh -T user@pass <<EOF
...
TTY通常用于交互式会话。如果远程系统上的会话没有TTY,则远程系统可能不会发送此文本。