Получить имя домена из переменной PHP - PullRequest
1 голос
/ 21 октября 2019

У меня есть файл конфигурации PHP, который я получил из SSH. Вот пример файла конфигурации в PHP:

<?php
$url_root='https://google.fr';
$document_root='/usr/share/nginx/html';

Команда, которую я использую для получения URL:

grep -oE '\$url_root=.*;' conf.php | tail -1 | sed 's/$url_root=//g;s/;//g'

Вывод:

'https://google.fr'

Но я ожидаючтобы получить только google.fr

Затем мне нужно внедрить эту командную строку в ssh как:

domain=$(ssh -oStrictHostKeyChecking=no root@127.0.0.1 '
    COMMAND HERE;
')

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Для размещения непредсказуемых данных (иначе вы можете найти полные URL, включая другие маршруты / файлы, а не только доменные имена), я бы выбрал:

your_str='https://google.fr/somedir/someotherdir/index.html'
echo $your_str | cut -d'/' -f3

Вывод:

google.fr

В вашей команде ssh:

 'grep -oE '\''\$url_root=.*;'\'' conf.php | tail -1 | sed '\''s/$url_root=//g;s/;//g'\'' | cut -d'\''/'\'' -f3'
1 голос
/ 21 октября 2019

Попробуйте это:

DOMAIN_NAME=$(grep -oE '\$url_root=.*;' conf.php | tail -1| sed "s/\$url_root='//g;s/^[a-z]*:\/\///g;s/';//")
echo "Domain name is: $DOMAIN_NAME";
# ssh user@$DOMAIN_NAME etc...

Часть кода s/^[a-z]*:\/\///g; ищет одно или несколько вхождений az, за которыми следует: //, и удаляет его, если он существует.

...