2013-02-16 2 views
4

Есть ли команда bash для выполнения двоичного «потока»? Существует хороший способ загрузки и запуска сценариев оболочки непосредственно из Интернета.выполнить двоичный код непосредственно из curl

как пример:

curl http://j.mp/spf13-vim3 -L -o - | sh 

Можно ли запускать исполняемые файлы без сохранения файла, CHMOD и т.д.?

что-то вроде:

curl http://example.com/compiled_file | exec_binary 
+0

Вы пробовали 'завиток http://j.mp/spf13-vim3 -L -o - | xargs sh'? Для двоичных файлов вы можете написать сценарий, который сохраняет временный файл, добавляет права выполнения через chmod и запускает его. Однако все эти действия создают огромный риск для безопасности. – harpun

+0

Да, это риск для безопасности, но я знаю файл, и это не вопрос. Сценарий оболочки был бы возможностью, но я ищу лучшее решение без сценария оболочки. – NaN

ответ

8

Ядра 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.$$ 
Смежные вопросы