2017-12-17 2 views
0

웹 사이트 URL을 HTML 양식을 통해 여러 cURL 명령 (현재는 쉘 스크립트 양식)으로 제출하는 가장 좋은 방법을 찾고 있는데, 이는 HTTP 검사에 사용됩니다 상태 (302 등), 헤더를 당기고 리디렉션을 따르십시오. 원격 웹 서버 상태를 확인하기위한 기본 cURL 기능을 사용합니다. 이는 문제가되는 임의의 웹 사이트가 현재 접근 가능한 것으로 확인 될 수 있음을 확인하기위한 것입니다. 다시 말하지만, 이러한 변수는 일종의 형식을 통해 동적으로 정의되어야하며 스크립트를 통해 정적 변수/arg로 설정되지 않아야합니다.HTML 양식의 URL을 cURL 프로세스로 전달

터미널에서 PHP 및 bash 스크립트를 사용하여이 작업을 수행 할 수 있었지만 HTML 양식의 URL, 서버 측 스크립트에 전달하는 데 가장 좋은 프로세스는 무엇인지 모릅니다. 앞으로 cURL을위한 셸 프로세스 ... 또는 최선의 선택 인 경우에도 솔직히. 필자는 PHP가 반드시이 과정을위한 최선의 선택이 아닐 수도 있다는 것을 알고 있습니다. 반드시이를 수행하는 가장 안전한 방법은 아닙니다.

내가하고 싶은 것은 다음 HTML 양식을 사용하여 다음 cURL 명령에 URL을 제출하는 것입니다. bash 스크립트에 URL이 있기 때문에 실행하고 결과를 웹 사이트에 다시 표시합니다 제공된 URL의 상태를 나타냅니다.

<html> 
<body> 
<form method="post" action="test.php"> 
<input type="text" name="domain" size="35" /> 
<input type="submit" value="submit" /> 
</body> 
</html> 

컬 명령 :

curl -Isk $domain | grep HTTP | cut -d ' ' -f2 

curl -LIs $domain --max-redirs 10 | grep 301 | wc -l 

curl -LIs $domain --max-redirs 10 | grep -i Content-Type 

편집 : 이것은 내가 터미널에서 사용하고있는 PHP 스크립트입니다. 그것은 잘 작동합니다. 나는 HTML 폼의 $ domain 값을이 스크립트로 전달하려고 시도하고 있었고, 작동하지 않는 내 cURL bash 스크립트로 전달하려고 시도했다. 나는 이것이 어디서 잘못 될지 확신하지 못한다.

<?PHP 
$domain = "google.com"; 
$command = "/usr/lib/cgi-bin/test.sh"; 
$output = shell_exec($command . " " . $domain); 
echo "$output"; 
?> 

이것은 내 test.sh bash 스크립트입니다.

#!/bin/bash 
domain=$1 
output="$(curl -Isk $domain | grep HTTP | cut -d ' ' -f2)" 
echo "$output" 

나는 노고 ... .. HTML 양식에서, 상관없이 내가 무엇을 시도했다의 단자를 형성 실제 간단 말했다와 챔피언처럼 작동처럼. 모든 통찰력에 미리 감사드립니다.

+0

PHP를 사용하여이 문제를 해결하기 위해 이미 시도한 적이 있다면 실제 문제는 무엇입니까? 작동하는 경우, 그냥 그런 식으로하십시오 :) –

+0

답장을 보내 주셔서 감사합니다. 문제는 웹 사이트 양식뿐만 아니라 터미널에서 URL을 제출해야한다는 것입니다. 다음 PHP, escapearg/escapecmd와 작동하지만 HTML 형식을 통해 제대로 작동하지 않습니다 ... 여러 가지 시도를했지만 아무 소용이 없습니다. 원래의 질문을 편집하여 PHP 스크립트를 포함 시켰습니다. PHP 스크립트는 $ 도메인의 정적 값으로 작업합니다. – uf0undzach

답변

0

나는 이것을 알아내어 PHP 내부에서 작동하도록했습니다. 원래의 질문을 올렸을 때, 나는 PHP가 자신의 cURL lib를 사용할 수 있다는 것을 알지 못했다. 다음은 작동 순서에서 보이는 것입니다. 이전과 같은 HTML 양식을 사용하고 있습니다.

<?php 
$ch = curl_init($_POST['domain']); 
curl_exec($ch); 

    if (!curl_errno($ch)) { 
     switch (http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) { 
     case 200: echo 'HTTP code: ', $http_code, '-Success', "\n"; 
     break; 
     default: 
     echo 'HTTP code: ', $http_code, '-Success', "\n"; 
     } 
    } 

curl_close($ch); 
?>