Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用嵌套命令将bash脚本转换为windows cmd_Linux_Windows_Bash_Shell_Curl - Fatal编程技术网

Linux 使用嵌套命令将bash脚本转换为windows cmd

Linux 使用嵌套命令将bash脚本转换为windows cmd,linux,windows,bash,shell,curl,Linux,Windows,Bash,Shell,Curl,我正在bash控制台中成功执行此curl命令,以从rest资源检索数据: curl -H "Accept: application/json" -H "Content-Type: application/json" -H "X-content: test_content" -H "X-Public: public_key" -H "X-Hash: $(printf "testcompany1" | openssl sha256 -hmac "secret_key" | sed "s/^.* //

我正在bash控制台中成功执行此curl命令,以从rest资源检索数据:

curl -H "Accept: application/json" -H "Content-Type: application/json" -H "X-content: test_content" -H "X-Public: public_key" -H "X-Hash: $(printf "testcompany1" | openssl sha256 -hmac "secret_key" | sed "s/^.* //" | tr -d "\n")" -X GET http://192.168.100.20/rest/v01/customer/csv > /home/user/customer.csv
我想做的是在windows cmd shell中使用它。已安装Cygwin和curl。因此,我一直追踪到这个让我困惑的hmac哈希,它在我的脚本中使用$(command)作为嵌套命令完成:


如何获取windows shell cmd以识别此信息?或者在windows中是否有其他更智能的方法使用hmac auth获取rest数据?

我将bash oneliner拆分为批处理文件中的I块,如下所示:

echo off
set content=content
set secret=secret_key
printf %content% | openssl sha256 -hmac %secret% | sed "s/^.* //" | tr -d "\n" > hash.txt
set /p hash=< hash.txt
curl -H "Accept: application/json" -H "Content-Type: application/json" -H "X-content: %content%" -H "X-Public: public_key -H "X-Hash: %hash%" -X GET http://192.168.100.20/rest/v01/customer/csv > out.csv
echo关闭
设置内容=内容
set secret=secret\u密钥
printf%content%| openssl sha256-hmac%secret%| sed“s/^.*/“| tr-d”\n“>hash.txt
set/p hash=out.csv

printf命令对于生成正确的散列值非常挑剔,因此我先将其发送到一个文件,然后再发送回来。

我将bash oneliner拆分为批处理文件中的I个块,如下所示:

echo off
set content=content
set secret=secret_key
printf %content% | openssl sha256 -hmac %secret% | sed "s/^.* //" | tr -d "\n" > hash.txt
set /p hash=< hash.txt
curl -H "Accept: application/json" -H "Content-Type: application/json" -H "X-content: %content%" -H "X-Public: public_key -H "X-Hash: %hash%" -X GET http://192.168.100.20/rest/v01/customer/csv > out.csv
echo关闭
设置内容=内容
set secret=secret\u密钥
printf%content%| openssl sha256-hmac%secret%| sed“s/^.*/“| tr-d”\n“>hash.txt
set/p hash=out.csv

printf命令对于生成正确的散列值非常挑剔,因此我先将其发送到一个文件,然后再发送回来。

运行:printf“testcompany1”| openssl sha256-hmac“secret_key”| sed“s/^.*/“| tr-d”\n并将散列插入X-hash返回预期结果。FYII不会开始将bash翻译成Windows命令shell,即使有人付给我很多钱。虽然SET命令有一个变体,允许您将命令的标准输出填充到环境变量中,但您迟早会遇到新问题。既然已经安装了Cygwin,为什么不用bash/zsh/ruby/perl/whateveryoulike编写整个脚本,然后围绕它编写一个小的批处理包装器呢?我得出了同样的结论。我已经做了一个批处理文件。我可以从libreoffice调用这个函数。运行:printf“testcompany1”| openssl sha256-hmac“secret_key”| sed“s/^.*/“| tr-d”\n并在X-hash中插入哈希返回预期结果。FYII不会开始将bash翻译成Windows命令shell,即使有人付给我很多钱。虽然SET命令有一个变体,允许您将命令的标准输出填充到环境变量中,但您迟早会遇到新问题。既然已经安装了Cygwin,为什么不用bash/zsh/ruby/perl/whateveryoulike编写整个脚本,然后围绕它编写一个小的批处理包装器呢?我得出了同样的结论。我已经做了一个批处理文件。这是我第一次从图书馆办公室打电话。