使用 bash 脚本上传 BusyBox 文件 [POST]
BusyBox file upload [POST] with bash script
我有一个设备 运行 具有 hdmi 输出的限制版本的 busybox。我需要上传一张图片,以用作设备启动时的启动画面。厂家提供了tftp的方法,但是确实不行,他们也不太热心帮忙。
我有什么
我可以远程登录设备。没有文本编辑器,所以我正在创建这样的脚本:
echo "#!/bin/bash
(
while read -d '' line ; do
printf '%s\n' \"$line\"
done
) > /www/images/test.gif
echo 'Status: 204 No Content'
echo ;;
esac" > file.cgi
该脚本是 https://codereview.stackexchange.com/a/79626
的修改版本
该设备已经有一个 http 服务器 运行,我能够成功 POST 一个文件到脚本。文本文件 (txt,html) 上传正确,我可以通过设备网络界面查看它们。
然而,对于图像来说就不是这样了。上传完成,我可以查看文件的内容(cat image
生成 *PNG [二进制输出] *)。文件大小正确或接近预期大小。在 Web 浏览器中打开文件会生成损坏的图像,其中 Chrome 告诉我 Resource interpreted as Document but transferred with MIME type image/png: "http://169.254.3.163/test.png".
我是一个普通的 linux 用户,但这种类型的互动是我的弱点,所以任何帮助将不胜感激。
你所要做的就是从标准输入读取,假设你可以写入/www/images
,这是cgi脚本:
#! /bin/sh
cat - > /www/images/test.gif
echo "
OK"
我有一个设备 运行 具有 hdmi 输出的限制版本的 busybox。我需要上传一张图片,以用作设备启动时的启动画面。厂家提供了tftp的方法,但是确实不行,他们也不太热心帮忙。
我有什么
我可以远程登录设备。没有文本编辑器,所以我正在创建这样的脚本:
echo "#!/bin/bash
(
while read -d '' line ; do
printf '%s\n' \"$line\"
done
) > /www/images/test.gif
echo 'Status: 204 No Content'
echo ;;
esac" > file.cgi
该脚本是 https://codereview.stackexchange.com/a/79626
的修改版本该设备已经有一个 http 服务器 运行,我能够成功 POST 一个文件到脚本。文本文件 (txt,html) 上传正确,我可以通过设备网络界面查看它们。
然而,对于图像来说就不是这样了。上传完成,我可以查看文件的内容(cat image
生成 *PNG [二进制输出] *)。文件大小正确或接近预期大小。在 Web 浏览器中打开文件会生成损坏的图像,其中 Chrome 告诉我 Resource interpreted as Document but transferred with MIME type image/png: "http://169.254.3.163/test.png".
我是一个普通的 linux 用户,但这种类型的互动是我的弱点,所以任何帮助将不胜感激。
你所要做的就是从标准输入读取,假设你可以写入/www/images
,这是cgi脚本:
#! /bin/sh
cat - > /www/images/test.gif
echo "
OK"