在我的shell脚本中,sFTP put过程完成后。我需要检查PUT过程是成功完成还是失败。
答案 0 :(得分:0)
根本不要使用expect
。
#!/usr/bin/env bash
batchfile=$(mktemp -t sftp-batchfile.XXXXXX) || exit
trap 'rm -f "$batchfile"' EXIT
cat >"$batchfile" <EOF
put test_file.txt $dest_location
bye
EOF
if sftp -b "$batchfile" "user@hostname"; then
echo "The put succeeded"
else
echo "The put failed"
fi
如SFTP手册页中所述,重点是:
最终使用格式允许使用-b选项进行自动会话。 在这种情况下,有必要配置非交互式身份验证以避免在连接时输入密码(有关详细信息,请参阅sshd(8)和ssh-keygen(1))。