每当有任何新的 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 脚本时不应该出现的提示。