Bash 从服务器 A 下载 HTML 并将其 POST 下载到服务器 B 的脚本
Bash script to download HTML from server A and POST it to server B
本地网络中有一个网站。我想编写一个 bash 脚本,它将从本地网站下载 HTML 并将其发送到外部服务器,PHP 脚本可以从 $_POST
读取它:
html=$(wget --post-data="str=data" -qO- http://192.168.1.8/reg/index.php)
#so far so good, and $html contains data I want to send to my website
wget --post-data="html=$html" -qO- http://mywebsite.com/test.php
在 test.php
中,数据总是格式错误。
有什么方法可以正确转义 $html
,还是我应该完全改变解决问题的方法?
在发送请求之前使用 Base64 对您的 HTML 进行编码:
html=$( wget --post-data="str=data" -qO- http://192.168.1.8/reg/index.php | base64 )
URL-编码您的 POST 数据。
不幸的是,wget
不会 URL 为您编码 post 数据。如果
可用,您可以使用 curl
,它为
POST 请求:
curl -S -d "str=${html}" --data-urlencode -- http://mywebsite.com/test.php
如果curl
不可用,您需要替换$html
中的所有+
%2B
和所有 /
%2F
在 post 到 test.php
之前,例如
使用:
html=$( sed -e 's/+/%2B/g' -e 's/\//%2F/g' <<< "$html" )
在test.php
中,你之前将$_POST['str']
传递给base64_decode()
使用它,查看它
documentation.
本地网络中有一个网站。我想编写一个 bash 脚本,它将从本地网站下载 HTML 并将其发送到外部服务器,PHP 脚本可以从 $_POST
读取它:
html=$(wget --post-data="str=data" -qO- http://192.168.1.8/reg/index.php)
#so far so good, and $html contains data I want to send to my website
wget --post-data="html=$html" -qO- http://mywebsite.com/test.php
在 test.php
中,数据总是格式错误。
有什么方法可以正确转义 $html
,还是我应该完全改变解决问题的方法?
在发送请求之前使用 Base64 对您的 HTML 进行编码:
html=$( wget --post-data="str=data" -qO- http://192.168.1.8/reg/index.php | base64 )
URL-编码您的 POST 数据。
不幸的是,
wget
不会 URL 为您编码 post 数据。如果 可用,您可以使用curl
,它为 POST 请求:curl -S -d "str=${html}" --data-urlencode -- http://mywebsite.com/test.php
如果
curl
不可用,您需要替换$html
中的所有+
%2B
和所有/
%2F
在 post 到test.php
之前,例如 使用:html=$( sed -e 's/+/%2B/g' -e 's/\//%2F/g' <<< "$html" )
在
test.php
中,你之前将$_POST['str']
传递给base64_decode()
使用它,查看它
documentation.