是否有执行二进制“流”的 bash 命令?有一种直接从 Internet 加载和运行 shell 脚本的好方法。
例如:
curl http://j.mp/spf13-vim3 -L -o - | sh
是否可以在不保存文件、chmod 等的情况下运行二进制文件?
就像是:
curl http://example.com/compiled_file | exec_binary
是否有执行二进制“流”的 bash 命令?有一种直接从 Internet 加载和运行 shell 脚本的好方法。
例如:
curl http://j.mp/spf13-vim3 -L -o - | sh
是否可以在不保存文件、chmod 等的情况下运行二进制文件?
就像是:
curl http://example.com/compiled_file | exec_binary
我知道的 Unix 内核期望二进制可执行文件存储在磁盘上。这是必需的,因此他们可以对任意偏移执行查找操作,并将文件内容映射到内存中。因此,直接从标准输入执行二进制流是不可能的。
您可以做的最好的事情是编写一个脚本,通过将数据保存到一个临时文件中来间接完成您想要的事情。
#!/bin/sh
# Arrange for the temporary file to be deleted when the script terminates
trap 'rm -f "/tmp/exec.$$"' 0
trap 'exit $?' 1 2 3 15
# Create temporary file from the standard input
cat >/tmp/exec.$$
# Make the temporary file executable
chmod +x /tmp/exec.$$
# Execute the temporary file
/tmp/exec.$$