Код, который должен был работать на 100%, по-видимому, не сократил его для меня, я немного исправил этот пример, но нашел код, который не помогал, и проблемы с ним. поэтому я изменил его на несколько функций (чтобы сохранить запрос из списка из Mozilla все время и удалить систему кеша). Это было протестировано против набора из 1000 URL-адресов и, казалось, работало.
function domain($url)
{
global $subtlds;
$slds = "";
$url = strtolower($url);
$host = parse_url('http://'.$url,PHP_URL_HOST);
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
foreach($subtlds as $sub){
if (preg_match('/\.'.preg_quote($sub).'$/', $host, $xyz)){
preg_match("/[^\.\/]+\.[^\.\/]+\.[^\.\/]+$/", $host, $matches);
}
}
return @$matches[0];
}
function get_tlds() {
$address = 'http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1';
$content = file($address);
foreach ($content as $num => $line) {
$line = trim($line);
if($line == '') continue;
if(@substr($line[0], 0, 2) == '/') continue;
$line = @preg_replace("/[^a-zA-Z0-9\.]/", '', $line);
if($line == '') continue; //$line = '.'.$line;
if(@$line[0] == '.') $line = substr($line, 1);
if(!strstr($line, '.')) continue;
$subtlds[] = $line;
//echo "{$num}: '{$line}'"; echo "<br>";
}
$subtlds = array_merge(array(
'co.uk', 'me.uk', 'net.uk', 'org.uk', 'sch.uk', 'ac.uk',
'gov.uk', 'nhs.uk', 'police.uk', 'mod.uk', 'asn.au', 'com.au',
'net.au', 'id.au', 'org.au', 'edu.au', 'gov.au', 'csiro.au'
), $subtlds);
$subtlds = array_unique($subtlds);
return $subtlds;
}
Затем используйте его как
$subtlds = get_tlds();
echo domain('www.example.com') //outputs: example.com
echo domain('www.example.uk.com') //outputs: example.uk.com
echo domain('www.example.fr') //outputs: example.fr
Я знаю, что я должен был превратить это в класс, но не успели.
Я могу думать о 3 причинах не возвращать ничего
174.257.244.157
в известные хосты SSH jenkins
для выполнения команды sudo , если это так, добавьте пользователя jenkins
в группу sudo
и настройте его чтобы запускал команды без запроса пароля /opt/mew/run_me.sh
ничего не делает / ничего не предпринимает, попробуйте добавить что-то вроде echo "Starting..."
к началу, чтобы иметь хотя бы некоторый вывод. Или замените его некоторой командой, которая, как гарантируется, будет работать как ls
или whoami
или date
. Чтобы получить больше информации о том, что происходит, вы можете изменить свой скрипт Groovy для использования класса ProcessBuilder :
new ProcessBuilder("c:/Program Files/PuTTY/plink.exe jenkins@174.257.244.157 -pw test!67 sudo /opt/mew/run_me.sh").inheritIO().start().text
Дополнительная информация: Apache Groovy - почему и как вы должны использовать его