在 shell 脚本中如何在尝试使用 SFTP 连接到另一台服务器时删除提示为是/否

问题描述 投票:0回答:0

每当有任何新的 SFTP 连接出现时,在 shell 脚本中它应该自动添加服务器详细信息。根据 shell 脚本,当它尝试连接到新服务器时,它应该将服务器详细信息放入

/home/user/.ssh/known_hosts
文件中。在调试/运行脚本提示时,当它连接到目标服务器时出现
Yes/No
,这在调试/运行 shell 脚本时成为阻止程序。下面是 shell 脚本。

#!/bin/ksh

SFTP_HOST={1}
SFTP_USER={2}
SFTP_PORT={3}

HOST=`echo $SFTP_HOST | cut -d "." -f 1`
touch /home/user/.ssh/known_hosts

if grep -q $HOST /home/user/.ssh/known_hosts
then
  RETURN=0
else
  ip=`dig +short $SFTP_HOST`
  keyscan=`ssh-keyscan -t ecdsa-sha2-nistp256 -p ${SFTP_PORT} -H ${SFTP_HOST} | awk '{ print $2 " " $3 }'`
  if [ ${#keyscan} -eq 0 ]
  then
    keyscan=`ssh-keyscan -t ssh-rsa -p ${SFTP_PORT} -H ${SFTP_HOST} | awk '{ print $2 " " $3 }'`
  fi

  if [[ $ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]
  then
    echo "$SFTP_HOST, $ip $keyscan" >> /home/user/.ssh/known_hosts
  else
    echo "Host $SFTP_HOST does not resolve IP Address."
    RETURN=1
  fi
fi
.............

echo "SFTP complete for user."

当我尝试调试/执行它然后在连接到目标服务器时得到提示

Yes/No

...................
RSA fingerprint is <RSA-key>             #RSA-key could be anything
Are you sure want to continue connecting (yes/no)?

当我键入 Yes 时,它可以添加 & 当键入 No 时,它不会添加,但是当 shell 脚本在生产服务器中运行时,它不应该作为提示询问。那么如何删除这个在我调试/执行 shell 脚本时不应该出现的提示。

bash shell unix ksh
© www.soinside.com 2019 - 2024. All rights reserved.