我目前正在编写一个shell / bash脚本来自动化工作流程。这个bash脚本可以克隆项目并在Bitbucket上创建新的repo,做作曲家安装/更新等等。
我的第一个计划是在整个SSH上执行此操作,但在某些情况下我需要HTTPS。因为所有人都认为通过HTTPS,我需要首先检查Bitbucket的用户凭据。凭证由用户名和密码组成。
这可能吗?如果是这样,怎么样?
答案 0 :(得分:3)
正如您在评论中所建议的那样,curl
可以为您执行HTTP Basic Auth。对于BitBucket,响应将为401 Unauthorized
或200 OK
,具体取决于用户名/密码对的有效性。您可以使用grep
测试输出(或仅限标题),但使用-w
/--write-out
选项并结合HEAD
请求和{{1}更加强大的方法ilenced输出:
-s
然后,要测试状态,可以使用简单的条件表达式:
http_status=$(curl -X HEAD -s -w '%{http_code}' \
-u "username:password" -H "Content-Type: application/json" \
https://api.bitbucket.org/2.0/repositories/$repo_owner)
或者,如果您计划测试多个状态代码,则可以使用if [[ $http_status == 200 ]]; then
echo "Credentials valid"
else
if [[ $http_status == 401 ]]; then
echo "Credentials INVALID"
else
echo "Unexpected HTTP status code: $http_status"
fi
fi
命令,例如:
case