Мы использовали для редактирования сценария полезной нагрузки через терминал на старом сервере.
Чтобы упростить и избежать опечаток, я хотел бы разработать скрипт php, который генерирует полезную нагрузку, сохраняет его в файл и использует встроенные функции FTP в PHP для загрузки файла на FTP-сервер и chmod скрипта до 755.
Но моя полезная нагрузка не особенно понравилась серверу. Он не работает.
#./payload.sh
-sh: ./payload.sh: not found
#
Однако после выполнения простого dos2unix payload.sh
все работает нормально.
#dos2unix payload.sh
#./payload.sh
[OK] running payload....
#
Как я могу автоматически лепить мой файл, чтобы избежать необходимости dos2unix это каждый раз? Я пробовал очевидный метод KISS:
$contents = str_replace("\r","",$contents);
$contents = trim($contents);
Не повезло. Сценарий все еще не работает.
Поэтому я заглянул в dos2unix.c и dos2unix.h и узнал, что это, казалось бы, не так просто, как я думал. Было 800 с лишним строк кода.
Есть ли более простые вещи, которые я могу сделать в PHP? FWIW, я должен признать, что на данный момент я использую файлы с ручным вводом, написанные в Sublime Text 2 на моем Mac. Я попытался "Сохранить с кодировкой"/"UTF-8" и выбрал "Unix" как "Line Endings".
Теперь я использую FTP_BINARY вместо FTP_ASCII. Работает сейчас. - EDP
system("dos2unix $script")
работа выполнена. Хотя по общему признанию это не помогает понять почему. Можем ли мы увидеть первые несколько строк сценария оболочки?ftp_put($conn, $target, $source, FTP_ASCII);