2011-04-19 2 views
2

rate -c 192.168.122.0/24 명령을 내 Centos 컴퓨터에서 실행하고 shell_exec('rate -c 192.168.122.0/24') 명령을 사용하여 해당 명령의 출력을 텍스트 파일에 기록하려고합니다. 아직도 운이 없다!php shell_exec()를 사용하여 텍스트 파일을 가져옵니다.

+0

어떤 문제가 있습니까? – alex

+0

'rate' 명령이 존재합니까? 커맨드 라인에서 작동합니까? – mario

+0

명령을 실행 한 후 터미널에 무엇을 얻을 수 있는지 말해 줄 수 있습니까? –

답변

1

에 저장할 수 있습니다, 당신의 명령을 제공하는 비 출력 스트림 종료. 실시간으로 출력을 읽으려면 popen을 사용해야합니다. PHP의 웹 사이트에서

예 :

$handle = popen('/path/to/executable 2>&1', 'r'); 
echo "'$handle'; " . gettype($handle) . "\n"; 
$read = fread($handle, 2096); 
echo $read; 
pclose($handle); 

당신은 단지 파일과 같은 프로세스 출력을 읽을 수 있습니다.

+0

예이 작품은 아주 잘 당신의 도움에 대단히 고마워요 정말 고마워. –

3

당신이 PHP를 필요로하지 않는 경우, 당신은 단지 쉘에서 그것을 실행할 수 있습니다

shell_exec('rate -c 192.168.122.0/24 > file.txt'); 

은 ">"문자 리디렉션 : 당신이 PHP에서 실행해야하는 경우

rate -c 192.168.122.0/24 > file.txt 

커멘드의 파일에의 출력.

+0

그럼 명령을 직접 실행하면 출력이 나옵니까? "> file.txt"의 유무에 관계없이 이것은 텍스트 파일이 비어있는 경우 이상합니다. 즉, 명령이 결과를 인쇄하지 않음을 의미합니다. –

+0

답장을 보내 주셔서 감사합니다. 터미널에서 명령을 실행할 때 비 종료 출력 스트림을 출력 할 수 있습니다. –

+0

@Roshan : "사용 권한 문제"에 부딪 혔습니까? 위의 명령 줄에'2> & 1'을 추가하십시오. 나는 PHP에서 임의의 명령을 실행할 수 있는지 의심 스럽다. –

1

또한 PHP를 통해 출력을 얻을하고 당신이 언급하는 것을 잊었다으로 텍스트 파일

$output = shell_exec('rate -c 192.168.122.0/24'); 
    $fh = fopen('output.txt','w'); 
    fwrite($fh,$output); 
    fclose($fh); 
+0

아무 행운의 친구도 아무것도 텍스트 파일에 쓰지 않아 –

0
$path_to_file = 'path/to/your/file'; 
$write_command = 'rate -c 192.168.122.0/24 >> '.$path_to_file; 
shell_exec($write_command); 

희망이 도움이됩니다. : D 그리고 이것은 좋은 길로 인도합니다. https://unix.stackexchange.com/a/127529/41966