отредактируйте файл bash, используя скрипт php - PullRequest
0 голосов
/ 20 апреля 2020

Я пытался запустить скрипт bash, используя php shell_exec(), перед этим я хочу отредактировать переменные bash, используя скрипт php. Пример: я хочу отредактировать этот имя домена, значение, txtdata значения в файле editdns. sh перед выполнением.

Bash скрипт :

#!bin/bash
domainname="mydomain.com"
value="mydomain.com."
txtdata="test2348734"
whmapi1 editzonerecord domain=$domainname line=24 name=$value class=IN ttl=14400 type=TXT txtdata=$txtdata

Ответы [ 3 ]

2 голосов
/ 20 апреля 2020

Я предлагаю изменить скрипт оболочки так, чтобы он принимал аргументы командной строки:

#!bin/bash
domainname=$1
value=$2
txtdata=$3
whmapi1 editzonerecord domain=$domainname line=24 name=$value class=IN ttl=14400 type=TXT txtdata=$txtdata

И затем вызывал скрипт из PHP с необходимыми аргументами:

$salida = shell_exec('/path/to/script.sh mydomain.com mydomain.com. test2348734');

Надеюсь, что это помогает!

1 голос
/ 20 апреля 2020

Не меняйте сценарий, это может вызвать проблемы или проблемы с безопасностью. Вы можете прочитать параметры в скрипте bash и в команде php call bash с параметрами:

#!bin/bash
domainname=$1 # <-- you can validate input here or in php
value=$2 # <-- you can validate input
txtdata=$3 # <-- you can validate input
whmapi1 editzonerecord domain=$domainname line=24 name=$value class=IN ttl=14400 type=TXT txtdata=$txtdata

a, затем в php командной строке:

editdns.sh "mydomain.com" "mydomain.com." "test2348734"

1 голос
/ 20 апреля 2020

Для этого не нужно редактировать bash. Не используйте значения stati c для переменных. Вы можете передавать аргументы в bash из командной строки.

#!bin/bash
domainname=$1
value=$2
txtdata=$3
whmapi1 editzonerecord domain=$domainname line=24 name=$value class=IN ttl=14400 type=TXT txtdata=$txtdata

лучший код:

#!bin/bash
whmapi1 editzonerecord domain=$1 line=24 name=$2 class=IN ttl=14400 type=TXT txtdata=$3

, поэтому вы должны запустить его с помощью:

$myresults=shell_exec("editdns.sh mydomain.com mydomain.com. test2348734");

измените правильный путь перед исключительным

$pathkeep = getcwd();  //keep the currect
chdir('/mypath/');    //change to the script path
$data = shell_exec('./editdns.sh var1 var2');    //excecute script
chdir($pathkeep );    //return to prev path
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...