«Работа с очередью сообщений в Postfix» и «Как сделать бинарник из bash скрипта»: разница между страницами
imported>Vix Нет описания правки |
imported>Vix (Новая страница: «Появилась необходимость, скомпилировать bash скрипт в бинарный исполняемый файл. Смысл и...») |
||
Строка 1: | Строка 1: | ||
Появилась необходимость, скомпилировать bash скрипт в бинарный исполняемый файл. Смысл и цели этих манипуляций каждый может найти себе сам, вдруг понадобится. Нашелся такой проект http://www.datsi.fi.upm.es/~frosal/, некоего Francisco Javier Rosales García. Утилита называется shc, транслятор языка bash в C, с последующей компиляцией в двоичный формат. Все манипуляции производим на виртуальной машине с debian 8 jessie на борту. Скачиваем архив, разархивируем, компилируем: | |||
root@debian8:~ # wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9b.tgz | |||
root@debian8:~ # tar -xzf ./shc-3.8.9b.tgz | |||
root@debian8:~ # cd shc-3.8.9b | |||
root@debian8:~/shc-3.8.9b # make | |||
cc -Wall shc.c -o shc | |||
*** ▒Do you want to probe shc with a test script? | |||
*** Please try... make test | |||
Собственно инструмент готов, можно использовать. | |||
Использование shc | |||
Список возможных опций: | |||
root@debian8:~/shc-3.8.9b # ./shc -help | |||
shc Version 3.8.9b, Generic Script Compiler | |||
shc Copyright (c) 1994-2015 Francisco Rosales | |||
shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script | |||
-e %s Expiration date in dd/mm/yyyy format [none] | |||
-m %s Message to display upon expiration ["Please contact your provider"] | |||
-f %s File name of the script to compile | |||
-i %s Inline option for the shell interpreter i.e: -e | |||
-x %s eXec command, as a printf format i.e: exec('%s',@ARGV); | |||
-l %s Last shell option i.e: -- | |||
-r Relax security. Make a redistributable binary | |||
-v Verbose compilation | |||
-D Switch ON debug exec calls [OFF] | |||
-T Allow binary to be traceable [no] | |||
-C Display license and exit | |||
-A Display abstract and exit | |||
-h Display help and exit | |||
Environment variables used: | |||
Name Default Usage | |||
CC cc C compiler command | |||
CFLAGS C compiler flags | |||
Please consult the shc(1) man page. | |||
Для проверки накидаем скрипт script.sh в пару строк: | |||
#!/bin/bash | |||
echo $1 | |||
Скрипт просто выводит строку, переданную ему в качестве параметра | |||
root@debian8:~/shc-3.8.9b # ./script.sh testing | |||
testing | |||
Теперь скомпилируем бинарный файл. | |||
root@debian8:~/shc-3.8.9b # ./shc -r -T -f ./script.sh | |||
На выходе получаем 2 новых файла: script.sh.x - двоичный исполняемый файл script.sh.x.c - С код полученный из bash скрипта, при желании его можно подправить руками и скомпилировать штатными средствами системы. Проверяем бинарник: | |||
root@debian8:~/shc-3.8.9b # ./script.sh.x "binary file" | |||
binary file | |||
Использовать полученный бинарник можно практически на любой версии linux. Скрипту можно установить срок годности (опция -e), по истечение которого файл будет выдавать сообщение (опция -m). | |||
ИСТОЧНИК: | |||
<hr> | <hr> | ||
* [https:// | * [https://vds-admin.ru/linux/%D0%BA%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D0%B1%D0%B8%D0%BD%D0%B0%D1%80%D0%BD%D0%B8%D0%BA-%D0%B8%D0%B7-bash-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0 Как сделать бинарник из bash скрипта] | ||
Версия от 16:22, 16 апреля 2019
Появилась необходимость, скомпилировать bash скрипт в бинарный исполняемый файл. Смысл и цели этих манипуляций каждый может найти себе сам, вдруг понадобится. Нашелся такой проект http://www.datsi.fi.upm.es/~frosal/, некоего Francisco Javier Rosales García. Утилита называется shc, транслятор языка bash в C, с последующей компиляцией в двоичный формат. Все манипуляции производим на виртуальной машине с debian 8 jessie на борту. Скачиваем архив, разархивируем, компилируем:
root@debian8:~ # wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9b.tgz root@debian8:~ # tar -xzf ./shc-3.8.9b.tgz root@debian8:~ # cd shc-3.8.9b root@debian8:~/shc-3.8.9b # make cc -Wall shc.c -o shc *** ▒Do you want to probe shc with a test script? *** Please try... make test
Собственно инструмент готов, можно использовать. Использование shc Список возможных опций:
root@debian8:~/shc-3.8.9b # ./shc -help shc Version 3.8.9b, Generic Script Compiler shc Copyright (c) 1994-2015 Francisco Rosales shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script -e %s Expiration date in dd/mm/yyyy format [none] -m %s Message to display upon expiration ["Please contact your provider"] -f %s File name of the script to compile -i %s Inline option for the shell interpreter i.e: -e -x %s eXec command, as a printf format i.e: exec('%s',@ARGV); -l %s Last shell option i.e: -- -r Relax security. Make a redistributable binary -v Verbose compilation -D Switch ON debug exec calls [OFF] -T Allow binary to be traceable [no] -C Display license and exit -A Display abstract and exit -h Display help and exit Environment variables used: Name Default Usage CC cc C compiler command CFLAGS C compiler flags Please consult the shc(1) man page.
Для проверки накидаем скрипт script.sh в пару строк:
#!/bin/bash echo $1
Скрипт просто выводит строку, переданную ему в качестве параметра
root@debian8:~/shc-3.8.9b # ./script.sh testing testing
Теперь скомпилируем бинарный файл.
root@debian8:~/shc-3.8.9b # ./shc -r -T -f ./script.sh
На выходе получаем 2 новых файла: script.sh.x - двоичный исполняемый файл script.sh.x.c - С код полученный из bash скрипта, при желании его можно подправить руками и скомпилировать штатными средствами системы. Проверяем бинарник:
root@debian8:~/shc-3.8.9b # ./script.sh.x "binary file" binary file
Использовать полученный бинарник можно практически на любой версии linux. Скрипту можно установить срок годности (опция -e), по истечение которого файл будет выдавать сообщение (опция -m).
ИСТОЧНИК: