如何检查SFTP会话是否已成功通过身份验证

时间:2019-08-13 06:45:03

标签: linux unix sftp ksh

我正在尝试在两台服务器之间进行SFTP,目前我已经为两台服务器设置了密钥,但是如果未设置密钥,我想知道认证失败。

该脚本包含sftp命令,其后是EOF结构中的其他命令,但是会话在提示输入密码时被卡住,并且在未设置密钥时不会前进。我尝试在10秒钟后对'password:'进行grepping,如果grep成功,则打印'authentication failure',但无法正确执行此操作。

我尝试grepping输入密码提示,以了解未设置密钥,但是此脚本卡在了密码提示中,并且无法前进

#/!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: '

此脚本不起作用,并且我收到“身份验证成功”或卡在密码提示中的提示,是否有更好的方法来检查身份验证是否成功或代码中的任何更改?< / p>

2 个答案:

答案 0 :(得分:2)

禁用密码提示:

sftp -o BatchMode=yes user@host

答案 1 :(得分:0)

您可以使用“ sftp -vv”来使用详细模式并检查所有过程。