ssh запустить php скрипт

Как в битриксе запустить php скрипт через SSH (PuTTY)?

При запуске в SSH консоли (PuTTY)

выскакивает ошибка что не подключается

Цитата
Алексей Волков написал:
$_SERVER[«DOCUMENT_ROOT»] = realpath(dirname(__FILE__).»/..»);
require($_SERVER[«DOCUMENT_ROOT»].»/bitrix/modules/main/include/prolog_before.php»);

Вот с этим у меня заработало, но полезной работы не происходит.
Скрипт добавляет элементы в инфоблок, но при запуске через SSH консоль он просто выводит последнюю строку из файла, которая сообщает что запись завершена.

Если скрипт запускать в Google Chrome то всё работает корректно, элементы в инфоблок добавляются.
Но мне этих элементов очень много надо добавить, потому решил запускать скрипт через консоль, но там он почему то не работает.

возможно в коде еще что-то не указано(подключение модуля или еще что-то), вот через консоль и не отрабатывает корректно.
можно в начало файла добавить что у вас выполняется php и нужно его использовать, например
#!/usr/bin/php

как вариант можно через консоль не через php запускать, а через wget, но лучше найти ошибку в вашем скрипте

Цитата
Алексей Волков написал:
возможно в коде еще что-то не указано(подключение модуля или еще что-то), вот через консоль и не отрабатывает корректно.
можно в начало файла добавить что у вас выполняется php и нужно его использовать, например
#!/usr/bin/php

как вариант можно через консоль не через php запускать, а через wget, но лучше найти ошибку в вашем скрипте

где об этом почитать можно?
не ожидал что запуск скрипта в консоли будет проблемой которую непонятно как решать.

В скрипте ошибок нет. В Google Chrome он работает корректно.

Источник

Простые примеры использования ssh

ssh запустить php скрипт

В статье собраны примеры использования ssh в работе web-разработчика. Каждая консольная команда, которая описана в статье, мне хотя бы один раз, но использовалась в реальных условиях. Возможно, я не правильный программист, но работать с консолью мне не нравится – это неудобно и сложно: нужно запоминать кучу разных команд, которые зачастую состоят всего из нескольких букв и ни каких ассоциаций не вызывают, поэтому и не запоминаются. Если у вас такие же чувства по отношению к консольным командам или вы только начинаете разбираться с ssh, то статья может быть полезна, в ней я собрал основные «фишки» для настройки и управления сервером, с которыми когда-либо сталкивался по работе.

Обновление операционной системы через ssh

Для обновления ОС, достаточно в консоле выполнить две команды:

Первая команда обновит данные о пакетах, а вторая выполнит обновление.

Работа с Apache через ssh

Команда для установки Apache:

Команда для запуска:

Команда для остановки:

Команда для перезапуска:

Включение модуля mod_rewrite:

Работа с PHP через ssh

Чтобы установить php на сервер можно выполнить команду:

Выполнить php скрипт:

Работа с MySql через ssh

Установка MySql на сервер:

Создать пароль для пользователя root:

Через консоль можно выполнять sql-запросы, только сначала нужно авторизоваться в Mysql:

Создание базы данных:

Создание пользователя для базы данных с локальными правами:

Создание пользователя с возможностью удаленного подключения:

Работа с планировщиком зада Cron через ssh

Установка Cron на сервер:

Для создания задачи, нужно отредактировать список задач:

Пример задачи на выполнение php-скрипта каждые 30 минут:

Для просмотра списка задач:

Работа с процессами через ssh

Для получения основных сведений о процессах, запущенных текущем пользователем:

Для получения основных сведений о процессах для всех пользователей:

Базовая информация о процессах для текущего пользователя:

Поиск процесса по куску имени:

Управление SFTP-пользователями через ssh

Создание нового пользователя SFTP:

Удаление пользователя SFTP:

Создание нового пользователя SFTP с правами root`а:

Создание «домашней» папки для пользователя:

Работа с архивами через ssh

Распаковать архив в текущую папку:

Распаковать архив в конкретную папку:

Настройка прав на файлы и папки через ssh

Задать права на файл:

Подробней про права на файлы и папки можно почитать тут: википедия.

Установка и настройка Memcached через ssh

После установки нужно настроить конфиг:

После настройки конфига, нужно перезапустить Memcached:

Далее необходимо установить и настроить модули для php:

Работа с редактором vim

Для перехода в режим редактирования нужно нажать insert или i.
Выхода из режима редактирования — нажать ESC.
Сохранения изменений: выйти из режима редактирования и ввести команду :wq
Выхода без сохранения — ввести команду :q!

Место на жестком диске сервера

Узнать место на жестком диске: полный объем/занято/свободно:
В гигабайтах:

Назначение владельца на файлы и папки

Перед выполнением команды, необходимо войти в родительскую папку:

Чтобы задать владельца www-data для папки public_html и всех вложенных в нее подпапок:

Чтобы задать владельца www-data для всех файлов внутри папки public_html:

Создание пользователя базы данных и саму БД PostgreSQL

Вход в psql под пользователем postgres(это аналог root для PostgreSQL):

И теперь можно выполнить sql запросы для создания пользователя и самой базы данных:

Источник

Как запустить php-скрипт через SSH?

У меня довольно длинный сценарий php, и всякий раз, когда мое интернет-соединение пропускается на секунду, браузер, похоже, останавливает скрипт. Я не могу сидеть в течение 8 часов, чтобы мой сценарий работал, поэтому я решил, что могу запустить его через ssh и вернуться на следующий день и получить свой выходной файл. Однако простой ввод имени скрипта в ssh не работает. есть ли специальная команда для запуска php-скриптов через ssh?

Если ваше интернет-соединение выйдет из строя, то это, вероятно, будет проблемой и для SSH, и хорошо, что открыть окно SSH не всегда лучше всего (что произойдет, если вы случайно закроете окно ssh? )

Я бы предложил SSHing на сервере, а затем запустить программу под названием « экран », которая будет продолжать работать независимо от того, что вы запускаете внутри нее, даже если ваше соединение падает.

Для этого сначала введите ssh на сервер и введите

Это приведет к загрузке экрана, нажмите enter, чтобы обойти экран приветствия

Теперь запустите PHP-скрипт

это запустит запуск PHP,

Теперь вы можете закрыть окно, если хотите, и скрипт будет продолжать работать

Чтобы вернуться на сеанс экрана, подключитесь к серверу и запустите команду

который снова подключит вас к вашей сессии, как если бы вы все время открывали окно.

Это действительно неплохо для запуска длинных скриптов или даже для запуска IRC-сессии на консоли: D

В общем, вы должны иметь возможность запускать скрипт из командной строки, как это

Выполнение этого на удаленном хосте через ssh можно сделать следующим образом:

Таким образом, он будет продолжать работать, даже если ваше соединение ssh падает. Вы также можете использовать screen вместо nohup если хотите.

Если это не сработает, вам нужно будет найти исполняемый файл php, а затем выполнить его.

Кстати, вы можете использовать экран, поэтому, если соединение с компьютером потеряно, сценарий все еще работает.

Кроме того, вы можете просто вызвать ignore_user_abort() и закрыть браузер после того, как вы нажмете на страницу.

выполнит файл php и закроет консоль без завершения процесса.

Источник

ssh2_exec

ssh2_exec — Выполнение команды на удалённом сервере

Описание

Запуск команды на удалённом сервере и выделение для неё канала.

Список параметров

env может передаваться как ассоциативный массив пар имя/значение, представляющие переменные окружения, которые нужно установить перед запуском команды.

Ширина виртуального терминала.

Высота виртуального терминала.

Возвращаемые значения

Возвращает поток в случае успешного выполнения или false в случае возникновения ошибки.

Примеры

Пример #1 Выполнение команды

Смотрите также

User Contributed Notes 17 notes

There doesn’t appear to be a way to get data from BOTH stderr and stdout streams simultaneously, or at least I’ve yet to find one.

The following code *should* get the error message written to stderr, but if the call to stream_get_contents() for stdout is run first, the subsequent call for stderr won’t return anything.

If the order of the statements is reversed, the call for stderr will return any errors and call for stdout will return nothing

?>

My initial suspicion is that either a) I’ve done something wrong or b) the blocking nature of both streams means that by the time first stream has received data and returned, the buffer for the second stream has already emptied.

I’ve done preliminary tests with blocking disabled, but haven’t had any luck there either.

The «pty» parameter is not documented.

You should pass a pty emulation name («vt102», «ansi», etc. ) if you want to emulate a pty, or NULL if you don’t.

Passing false will convert false to a string, and will allocate a «» terminal.

The following function can be used to read both stdout and stderr even if both streams contain gigabytes of data. It solves most problems mentioned in other comments, like blocking, like further using the existing connection etc.

I believe most of the problem that people are having here is that there is a misconception about what blocking *really* means.

So there are 2 problems:

2. If the program takes awhile, you have the same problem. You need to read until you’re done. So you need a sentinel value like the above.

3. Sleep() is just a bad idea here. Commands rarely take the same amount of time to execute a command twice. It may be OK if you’re doing *one* thing and can just wait 5 seconds. But that’s not cool if it’s something you’re doing in a loop.

Here’s what I use for doing ssh2_exec for long running scripts, expanding on other examples. It waits for a timeout and checks if both streams are finished. Does not use blocking and it gets data from both STDOUT and STDERR.

$t0 = time ();
$err_buf = null ;
$out_buf = null ;

// Wait here so we don’t hammer in this loop
sleep ( 1 );

> else <
echo «Failed to Shell\n» ;
>
?>

Adjust your timeout as necessary.

Источник

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как запустить PHP скрипт без веб-сервера

Интерпретатор PHP стал неотъемлемой частью практически каждого веб-сервера. Подавляющее большинство веб-приложений написаны на PHP. Поэтому технология PHP очень стойко у многих ассоциируется именно с веб окружением, со средой веб-сервера. Но на самом деле, запускать скрипты PHP можно без веб-браузера. Речь идёт не о специально созданных как веб приложения программах, таких как WordPress, phpMyAdmin, гостевые книги, форумы и прочее. Такие скрипты специально создавались для работы в условиях веб-сервера и для вывода результатов в веб-браузер. Вряд ли удастся полноценно с ними работать в командной строке. Речь идёт о консольных программах на PHP, которые могут выполнять различные, не обязательно связанные с веб сервисами функциями. По сути, PHP является очень гибким языком с хорошим набором классов и на нём можно написать консольную программу под любые функции. Либо ядро программы (так называемый бэк-энд) к которому будер обращаться графический пользовательский интерфейс.

Ещё запуск PHP скриптов в консоли удобен для изучающих язык. Хотя кто-то может с этим не согласиться. При выводе результатов в консоль, а также при передаче аргументов в скрипт, не нужно уделять внимание HTML. Но если вы изучаете PHP для создания веб-приложений и онлайн сервисов, то вам всё равно потом придётся доучивать особенности передачи аргументов из веб-браузера (в окружении сервера), а также HTML вообще, поскольку весь вывод скриптов нужно будет оформлять для браузеров пользователей.

Как запустить PHP скрипт в командной строке Linux

У вас должен быть установлен PHP, к счастью, в Linux интерпретатор PHP устанавливается очень просто, а в некоторых дистрибутивах присутствует по умолчанию. Если у вас его ещё нет, то установите его одной из следующей команд.

В Debian, Kali Linux, Linux Mint, Ubuntu:

В Arch Linux, BlackArch:

Установка полного веб-сервера в Linux Mint описана здесь, в Ubuntu здесь, в Arch Linux/BlackArch здесь, а в Kali Linux он уже установлен, про то, как его запустить здесь.

В остальном запуск скриптов в консоли, в том числе опции запуска, в Linux и Windows идентичные.

Если вы совсем новичок в Linux, то также смотрите Азы работы в командной строке.

Как запустить PHP скрипт в командной строке Windows

Если вы знакомы с запуском консольных программ в Windows или хотя бы в Linux, то для вас всё совсем просто — везде программы запускаются примерно одинаково. Но начнём по порядку для новичков.

Если вы хотите не только возможность запускать PHP из командной строки, но и полноценный веб-сервер Apache + PHP + MySQL на Windows, то выполните установку по этой статье.

Для запуска PHP в командной строке необязательно устанавливать веб-сервер, достаточно скачать и распаковать архив с PHP интерпретатором. О том, где скачать PHP с официального сайта и как разобраться с версиями, смотрите эту статью.

Если вы часто будете запускать PHP скрипты из командной строки Windows, то настоятельно рекомендуется Добавить путь до PHP в переменную окружения PATH в Windows. Благодаря этому не придётся каждый раз указывать полный путь до файла php.exe.

Теперь, когда PHP установлен и путь до php.exe добавлен в переменную окружения Windows, открываем командную строку, для этого нажмите сочетание клавиш Win+x и выберите Windows PowerShell.

Для проверки, что нормально установилось, посмотрим справку по PHP:

ssh запустить php скрипт

На самом деле, мы запускаем файл php.exe, но расширение можно отбросить. То есть предыдущая запись эквивалентна

Справка и опции запуска PHP скриптов в командной строке

Справка содержит опции для разнообразных вариантов запуска файлов .php в командной строке, поэтому приведу её перевод полностью.

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

Опцию -f можно отбросить, то есть предыдущая и следующая команды равнозначны:

Я создал тестовый файл, который расположен по пути C:\Users\Alex\Documents\PHP\test.php тогда я могу запустить его в PHP так:

Как передать аргументы PHP скрипту в командной строке

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

Пример запуска PHP скрипта с тремя аргументами:

Как в PHP скрипте обратиться к аргументам

Переданные аргументы содержаться в массиве $argv. Причём, порядковый номер аргумента соответствует номеру в массиве. То есть первый аргумент будет помещён в $argv[1], второй в $argv[2] и так далее.

Самый первый элемент массива с именем $argv[0] содержит полный путь до запускаемого скрипта.

Содержимое файла test.php:

Запустим его и передадим в скрипт три аргумента:

ssh запустить php скрипт

Как в PHP получить данные от пользователя в консоли

Благодаря передаваемым аргументам, скрипт может выполнять действия не только с прописанными в нём данными, но и с другими значениями, указанными при запуске скрипта.

Кстати, при работе в окружении веб-сервера, то есть когда PHP скрипт выполняет задачи для веб-сайта, возможность передать ему аргументы реализована с помощью HTTP методов GET и POST. Эти аргументы передаются перед запуском скрипта, и уже после запуска PHP скрипта новые данные отправить нельзя — нужно ждать завершения работы программы, и при необходимости запустить её ещё раз с новыми данными.

Во время работы скрипта может потребоваться ввод новых данных, в консоли это достигается с помощью строки запроса, в которую пользователь может ввести значение и нажать Enter для передачи его скрипту. В контексте веб-сайта такой возможности — передать данные уже во время выполнения скрипта — нет. То есть консольный запуск PHP скриптов с аргументами не только проще (не нужно возиться с HTML формой), но и даже более гибкий.

В PHP для запроса пользователю используется функция readline.

Эта функция одинаково работает и на Windows и на Linux. Причём на Linux она имеет интерактивные возможности Bash, например, сохраняет историю ввода, к которой можно вернуться с помощью стрелок. На Windows эта возможность появилась начиная с PHP 7.1.

Если сильно надо, можно настроить автозавершение вводимых данных. Все функции GNU Readline рассмотрены здесь. Я же коснусь только readline, которая считывает введённую пользователем строку. С этой функцией можно указать один опциональный аргумент — строку, которая будет показана пользователю в приглашении.

Пример консольного PHP скрипта, которые запрашивает у пользователя данные в приглашении командной строки:

ssh запустить php скрипт

Проверка синтаксиса скрипта PHP в командной строке

С опцией -l будет проверен синтаксис, то есть не нарушены ли правила кода PHP, но сам файл скрипт не будет выполнен:

Или если в файле есть ошибки:

Выполнение команд PHP в интерактивном режиме

Если вам это нужно, то можно работать с интерпретатором PHP в интерактивном режиме, вводя код построчно. При этом код выполняется после нажатия кнопки Enter, но значения переменных сохраняются в рамках одной сессии. То есть вы можете присвоить значение какой-либо переменной, а затем использовать его в других строках.

Для запуска интерактивного шелла:

ssh запустить php скрипт

Запуск отдельных команд PHP

Для выполнения отдельных команд используйте опцию -r:

Запуск встроенного в PHP веб-сервера

В PHP есть свой собственный веб-сервер! Если вам очень надо, можно вообще обойтись без сторонних серверов для каких-то определённых задач.

Допустим, в качестве прослушиваемого IP адреса я хочу установить 127.0.0.1, в качестве прослушиваемого порта — 84, корневая папка документов веб-сервера у меня расположена в C:\Users\Alex\Documents\PHP\, тогда команда запуска следующая:

В этой папке у меня файл test_2.php со следующим содержимым:

ssh запустить php скрипт

ssh запустить php скрипт

Можно было бы из спортивного интереса попробовать во встроенном веб-сервере запустить WordPress, но что-то лень…

Получение справки в командной строке

Для получения справки о функциях PHP прямо в командной строке используется опция —rf.

Ну как-то так… а чего вы хотели — это же консоль.

Насколько я понял, в строке Parameters в фигурных скобках пишется количество аргументов функции, строка required означает, что аргумент обязательный, а строка optional — что аргумент опциональный. О функции аргументов иногда можно догадаться по их имени, например, $filename. Информации о том, какое действие выполняет функция, видимо, нет.

Опции для разработчика

Если вы действительно пишите и отлаживаете код, в том числе для веб-сайтов, то вам пригодятся следующие опции:

Вывод информации о PHP

Для показа информации о PHP имеются следующие три опции:

Опция -i — это эквивалент phpinfo, но для консоли.

PHP не может сохранить файл даже если достаточно прав на запись

На самом деле это может случиться не только при запуске PHP скриптов из командной строки, но и при работе скрипта на веб-сервере. Но при запуске в консоли больше условий для получения этой проблемы: PHP скрипт не сохраняет файл в папку, на которую установлены права на запись для кого угодно (777).

Такое поведение может выглядеть необъяснимым, если вы не знаете о директиве open_basedir в главном конфигурационном файле php.ini. Данная директива ограничивает все файловые операции теми папками, которые указаны с ней. Пример:

Данная запись означает, что PHP скрипт может записывать файлы в папку /srv/http/, а также в папки /etc/webapps/, /usr/share/webapps/ и /tmp/.

Причём если директива open_basedir вообще не настроена (строка с ней, например, закомментирована), то PHP может записывать в любую папку, если у текущего пользователя достаточно прав на запись.

При работе в консоли PHP скрипт может пытаться сохранить файлы, например, в текущую папку — если эта папка не указана в open_basedir, но при этом сама директива open_basedir настроена, то возникнет описанная проблема: PHP не сможет записывать файлы даже в папку открытую для всех.

Чтобы избавиться от этой ошибки есть несколько вариантов:

Чтобы запустить PHP скрипт без учёта настроек файла php.ini используйте опцию -n, например:

Кстати, чтобы узнать, какие именно файлы настроек учитываются при работе PHP, выполните следующую команду:

ssh запустить php скрипт

Заключение

Запуск PHP скриптов в командной строке — это альтернатива их запуску через веб-сервер. Работа в консоли может быть удобна при обучении языку программированию PHP или для отладки определённых функций, даже если в дальнейшем эти функции и скрипты будут работать на веб-сервере.

Скрипт на PHP может быть альтернативой скрипту на Bash, особенно если нужно использовать СУБД (MySQL, SQLite) — с которыми через Bash работать тяжело, либо для использования возможностей PHP по работе с текстом в разметке XML, JSON — что в Bash также не очень удобно.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *