我正在尝试在两台服务器之间使用 SFTP,目前我已经为两台服务器设置了 key ,但如果未设置 key ,我想知道身份验证失败。
该脚本包含 sftp 命令,后跟 EOF 结构中的一堆其他命令,但 session 卡在提示输入密码的状态,并且在未设置 key 时不会继续前进。我尝试在 10 秒后 grep 查找“密码:”,如果 grep 成功则打印“身份验证失败”,但无法正确执行此操作。
我尝试使用 grepping 获取密码提示,以了解 key 未设置,但此脚本卡在密码提示上,无法前进
#/!bin/ksh
FILE=`echo "getme.txt"`
TARGET_IP=`echo "targethost"`
USER=`echo "user01"`
kgen_path=`echo "/pet1usr/ph/pet01/backupssh"`
echo "connecting"
sftp ${USER}@${TARGET_IP} << EOF 2>&1 | grep 'password: '
cd $kgen_path
cd 2019
put $FILE
bye
EOF
if [[ $? -eq 1 ]];
then
echo "Authentication successful"
else
echo "Authentication failure"
fi
echo "done"
我也尝试添加超时命令,但没有提示输入任何密码,脚本在 10 秒后结束
timeout 10s sftp ${USER}@${TARGET_IP} << EOF 2>&1 | grep 'password: '
此脚本不起作用,我收到“身份验证成功”或卡在密码提示中,是否有更好的方法来检查身份验证是否成功或代码是否有任何更改请告诉我?
最佳答案
禁用密码提示:
sftp -o BatchMode=yes user@host
关于linux - 如何检查 SFTP session 是否已成功通过身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57472434/