【问题标题】:Initial Welcome Message(Banner) after SSH not letting commands to get executed properlySSH 后的初始欢迎消息(横幅)不允许命令正确执行
【发布时间】:2016-09-25 09:55:02
【问题描述】:

我正在尝试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 连接没有完全建立?

【问题讨论】:

  • 使用expect。它完全符合您的要求,但存在很多问题。
  • expect 不能在我的 unix 上运行,还有其他方法吗?喜欢使用睡眠命令或其他什么?
  • 如果你想让它工作,你可能必须(在本地计算机上)安装它。
  • 对不起,我没有权限安装它,还有其他方法吗?

标签: linux unix ssh ksh


【解决方案1】:

您可以尝试使用 -T 选项运行 ssh 以防止它在远程系统上分配 TTY:

ssh -T user@pass <<EOF
...

TTY 通常用于交互式会话。如果您在远程系统上的会话没有 TTY,则远程系统可能不会发送此文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2021-12-24
    • 2021-01-25
    • 1970-01-01
    相关资源
    最近更新 更多