Есть ли способ встроить исполняемый двоичный файл в сценарии оболочки без дополнительных инструментов?

Сначала вы можете попробовать следующее:

sudo yum install pgadmin3_91

Если вы хотите убедиться, что у вас самая последняя версия, вы можете перейти сюда и загрузить последнюю версию исходного кода с расширением файла .tar.gz:

http : //www.postgresql.org/ftp/pgadmin3/release/

После загрузки исходного кода используйте следующие команды для установки pgAdmin. В этом примере я использую pgadmin3-1.10.3.tar.gz, но заменяю его версией, которую вы выбрали. Затем:

mv pgadmin3-1.10.3.tar.gz /usr/local/src
cd /usr/local/src
tar –zxvf pgadmin3-1.10.3.tar.gz
cd pgadmin3-1.10.3
./configure
make
make install

pgAdmin теперь должен быть доступен для доступа к серверам баз данных localhost, работающим на том же компьютере. Чтобы настроить ваш сервер для разрешения удаленного доступа пользователей к базе данных с помощью pgAdmin, нам нужно будет изменить 2 файла конфигурации. Этот сайт покажет вам, как:

http://www.gistutor.com/postgresqlpostgis/6-advanced-postgresqlpostgis-tutorials/14-how-to-install-pgadmin-and-configure-postgresql-server-to- accept-remote-connections.html

3
19.06.2018, 14:48
3 ответа

Как насчет:

unpack() {
    tail +9 "$0" > /tmp/xxx.$$
    chmod +x /tmp/xxx.$$
}
unpack
/tmp/xxx.$$ <add args here>
rm /tmp/xxx.$$
exit
<add the binary here>

Если вам не нравятся двоичные данные в сценарии, вы можете закодировать их и заменить catсоответствующим декодером.

Обратите внимание, что вам нужно заменить +9номером строки, с которой начинается двоичный файл, на случай, если вы измените сценарий, чтобы он имел другую длину.

Если ваша реализация tailне поддерживает аргумент +9, попробуйте вместо него -n +9.

Если вы боитесь затереть существующий файл /tmp, попробуйте использовать mktemp(1)для создания имени файла tmp.

Обратите внимание, что этот метод использовался сценариями обновления для набора компиляторов SunPro, которые включали сжатый архив tar со всем обновлением и некоторый код оболочки для управления обработкой этого.

2
27.01.2020, 21:18

Начиная с

aShellScriptaBinaryExecutable

делать

zip binary.zip aBinaryExecutable
cat aShellScript binary.zip > hybrid
chmod +x hybrid

Я пропустил, что добавить в сценарий, чтобы распаковать и запустить двоичный файл, но обратите внимание, что hybridявляется действительным zip-файлом -и допустимым сценарием оболочки, сценарий оболочки может распаковать себя и получить двоичный -исполняемый файл (, но не сценарий оболочки ).

Преимущество

Надежный :Файл является допустимым zip и допустимым сценарием оболочки (, если вы выходите, прежде чем пытаться интерпретировать мусор в конце ).

Недостаток

Конец сценария ужасен.

Почему это работает

  • shellначинает интерпретацию с начала файла. (Все смещения являются символическими.)
  • zipначинает интерпретацию с конца файла. Все смещения являются относительными.
2
27.01.2020, 21:18

Я бы добавил тег маркера в конец скрипта. Предположим, что "ТОЛЬКО _ДВОИЧНАЯ _ПОСЛЕ _ЭТОЙ _ТОЧКИ :" является моим маркером. Ваш сценарий может содержать эти строки.

#!/usr/bin/env bash
# my_script.sh


# find the line number where my tag is in this file
line_number=$(grep -na -m1 "^ONLY_BINARY_AFTER_THIS_POINT:$" "$0"|cut -d':' -f1)
# next line is where contents of my binary file starts, use mathematical expansion to increase it by 1
$((line_number+=1))
# dump everything after $line_number of this script into somewhere I can access
tail -n +"${line_number}" "$0" > /tmp/my_binary_file.bin
# do further processing on /tmp/my_binary_file.bin


# don't forget the new line here and don't type in anything after this point
#                            ↓
ONLY_BINARY_AFTER_THIS_POINT:

затем вы можете добавить двоичный файл к вашему сценарию,

cat my_script.sh my_binary_file.bin > my_appended_script.sh

Важно, что у вас должна быть только новая строка и ничего больше перед добавлением бинарного файла к вашему скрипту. Кроме того, если вы редактируете сценарий после добавления, вы должны быть осторожны при выборе текстового редактора. Текстовый редактор может изменить некоторые символы при сохранении скрипта.

примечание:Вы также можете напрямую добавить в свой сценарий, но если вы добавите перенаправление '>' вместо добавления '>>', ваш сценарий будет перезаписан.

0
25.03.2021, 12:33

Теги

Похожие вопросы