
eth0에서 IP 주소를 가져오기 위해 다음 PHP 명령을 실행하려고 합니다.
$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | tr ':' ' ' | awk '{ print $3 }'"));
하지만 난 아무것도 돌려받지 못해요. SSH를 통해 똑같은 명령을 실행하면 IP를 얻으므로 명령이 작동합니다.
이 줄을 열고 visudo
추가한 후 apache2를 다시 시작했습니다.
www-data ALL = NOPASSWD: /sbin/ifconfig
www-data ALL = NOPASSWD: /bin/grep
www-data ALL = NOPASSWD: /usr/bin/awk
www-data ALL = NOPASSWD: /usr/bin/tr
하지만 난 아직도 아무것도 돌려받지 못해요
답변1
grep 패턴이 출력과 일치하지 않는 것 같으 ifconfig
므로 grep
출력이 생성되지 않습니다. 다음을 시도해 보십시오.
$ip = trim(shell_exec("/sbin/ifconfig eth0 | grep -i 'inet Adresse:' | awk '{ print $2 }'"));
답변2
해결책을 찾았습니다. shell_exec
OS가 독일어로 설정되어 있어도 항상 영어로 출력되기 때문입니다 . 실행하면 출력 대신 shell_exec("/sbin/ifconfig")
항상 영어로 출력됩니다 .inet addr
inet Adresse
또한 내 파일의 사용자 및 그룹을 로 변경 www-data
하고 chown
로 스크립트 실행을 허용하는 것을 잊었습니다 chmod
. 그래도 이것이 필요한지는 모르겠습니다.