微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BASH:如何将参数和数据发送到STDIN上的进程

我正在编写一个调用curl的函数,可以通过STDINinput密码和参数(保持密码不在cmd行)。

我还需要在STDIN上发送POST数据(大量数据不适合cmd行)。

所以,从命令行我可以通过以下方式成功完成:

> curl -K --data-binary @- -other_non-pw_params > -u "username:password" > <User types ctrl-d> > lots_of_post_data > lots_of_post_data > <User types ctrl-d> > <User types ctrl-d>

现在…我试图在BASH脚本中做到这一点…

Active Directory如何在设置新密码时比较用户以前的密码

命令行参数的Shell脚本密码安全性

Nginx的基本authentication和子文件

安全地存储凭据,当我需要检索密码使用

如何从Perl文本文件中读取密码

Psudo-code:

{ echo '-u "username:password"' echo <ctrl-d> | cat dev/null | ^D echo lots_of_post_data echo lots_of_post_data } | curl -K --data-binary @- -other_non-pw_params

如何从密码保护的PDF文件删除打印保护?

Nginx上使用一次性cookie非常简单的authentication

运行在Nginx和Phusion Passenger上的密码保护Rails站点

从批处理脚本中FTP文件的选项,不用纯文本存储密码

在Windows中使用PHP创build受密码保护的Zip文件

啊哈! 这有一个特定的解决方案。

你传递所有的参数在STDIN上,并且把–data-binary @ – (或者等价的)放到最后,然后把所有的参数作为数据输入。 示例脚本:

#!/bin/bash { echo '--basic' echo '--compress' echo '--url "https://your_website"' echo '-u "username:password"' echo '--data-binary @-' echo 'lots_of_post_data' echo 'lots_of_post_data' } | curl --config -

使用“这里的文件”:

curl --config - <<EOF --basic ... EOF

没有办法像在Ctrl-D中一样在终端中模拟一个EOF保存到停止发送数据到流中。 你需要找到一个不同的方式来完成这个任务,也许可以通过编写一个更强大的语言脚本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐