linux - 如何检查 SFTP session 是否已成功验证

标签 linux unix sftp ksh

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

该脚本包含 sftp 命令,后跟 EOF 结构中的一堆其他命令,但 session 卡在提示输入密码的位置,并且在未设置 key 时无法继续。我尝试在 10 秒后 grep 查找“密码:”,如果 grep 成功,则打印“身份验证失败”,但无法正确执行此操作。

我尝试 grep 查找密码提示,以了解 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/

相关文章:

linux - 什么文本编辑器与我习惯的控制台命令结合使用

linux - 我可以在 CentOS 上安装并运行基于 RHEL 的 lxc 吗?

linux - QEMU 无法初始化 NVMe 设备

php - Codeigniter 扩展核心类 'My_Model' 在 unix 上找不到,但在 Windows 中正常?

java - 如何从java中的s3获取触发lambda的文件名

c# - .Net Core Machine Key 替代 webfarm

regex - sed、逗号、美元符号、单引号和双引号

unix - 在 Unix 操作系统中只移动目录而不移动文件

java - 将文件从 Android 应用程序上传到 SFTP 服务器

python - paramiko 文件传输操作是原子的吗?