특정한 IP주소대역이면 인증시키기

안녕하세요?
처음으로 이곳에다가 팁이란 것을 만들어 올리네요…
간단한 것인데 응용하면 좋을 것 같아서요…
원래는 인증후에 특정한 주소대역이면 다른 화면을 보여주는 그런 것을 만들려고 구현해본 것입니다.

소스는
—————————————————————————-
$UserIP = $REMOTE_ADDR;
echo $UserIP;
echo “
“;

$ip_extract = explode(“.”,$UserIP); //.로 분리해서 배열로 저장
$UserIP_trim = $ip_extract[0].”.”.$ip_extract[1]; //총4개의 값이 저장되겠죠?
echo $UserIP_trim;

$ip_block_1 = 200.100;
$ip_block_2 = 200.110;
$ip_block_3 = 200.120;

if(($UserIP_trim == $ip_block_1) or ($UserIP_trim == $ip_block_2) or ($UserIP_trim == $ip_block_3)) {
// 인증시키는 창으로 이동시킨다.
$url = $PHP_SELF;
$url = urlencode($url);
echo (““);
exit;
}

else {
echo(“





“);
}

?>
———————————————————————————–
이상 허접한 IP주소를 이용한 팁이었습니다.

세라핌 $UserIP = $REMOTE_ADDR;
이부분은 수정해야 될꺼같네요..^^; 12/08 22:49:26

전승기 네..
물론 없어도 됩니다.
바로 $ip_extract = explode(“.”,$REMOTE_ADDR); 로 해도 되겠죠… 12/08 23:28:51

sh. 정규표현식을 쓰는것도 괜찮습니다
if(!ereg(“$(200.100|200.110|200.120)”, $REMOTE_ADDR)) {
exit;
}
이런식으로… 12/09 0:31:47

s $REMOTE_ADDR 은 getenv(“REMOTE_ADDR”) 로 고쳐야될듯 합니다. 12/09 0:59:53

전영규 $ip = ip2long($REMOTE_ADDR);
if(($ip & $mask) == $mask)
{
die(“블럭된 ip 입니다.”);
}

대단한 건 아니지만… 참고하세요..

애니메이션 GIF 이미지 애니메이션 축소하기

리눅서

안녕하세요 리눅서 입니다.

많은분이 포토 이미지 축소를 하면서 GIF파일의 애니메이션을 그대로 축소하기를 원하시는것 같아 올려둡니다.

리눅스용이며 먼저 필요한 파일은 아래와 같습니다.

gifsicle-xxx.rpm

컴파일 보다는 RPM 버전을 권장합니다.

사용법은 포토 이미지 축소시 pnmscale 을 사용하지 마시고 아래와 같이 사용하세요

exec(“gifsicle –resize $width_s”.”x”.”$height_s /tmp/$image_name > /tmp/small_$image_name”);
$smallimage = addslashes(fread(fopen(“/tmp/small_$image_name”, “r”), filesize(“/tmp/small_$image_name”)));
unlink(“/tmp/small_$image_name”);

쉘상태에서 웹서버 접속자수 알아내기

netstat -n|grep -F :80|egrep ‘(ESTAB|SYN)’|awk ‘{print $5}’|sed ‘s/:[0-9]*//’|sort -u|wc -l

쉘상태에서 위와 같이 치시면 됩니다.

=수정 시작=
제가 생각을 해보니 명령어의 설명이 하나도 안들어갔군요 ^ㅡ^;;

netstat 은 네트워크의 상황을 나타내주는 유틸리티입니다.
옵션 -n은 재분석을 하지 않는옵션으로 빠른 결과출력 속도를 가져오죠.

grep는 정규표현식시 일치하는 줄만을 출력하는 쉘입니다.
-F옵션은 정규표현식을 사용하지 않겠다는 옵션이고.. “:80″은 netstat에서 “:80″을 포함한 줄만을 출력한다는 것이죠.. 즉. http프로토콜만을 출력하겠다는 것입니다.

egrep는 grep -E 와 같은 것으로 좀더 많은 정규표현식을 사용할 수 있습니다. 옵션은 ‘(ESTAB|SYN)’ 으로 주었는데 이는 정규표현식으죠.. 정규표현식을 알고싶으시면 아래의 URL으로..
http://kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/x10468.html 을 참조하세요.

awk 는 각 줄에서 공백을 기준으로 필드로 나누며 ‘{print $5}’는 5번째 필드만을 출력하겠다는 것입니다.

sed 는 비대화형 줄단위 편집기입니다. 정규표현식을 사용하며 ‘s/:[0-9]*//’옵션을 분리하면 s/// 안에 :[0-9]가 들어가있는 것으로 “s/이것//” 는 각 줄에서 “이것”이라는 글자만 지운다는 것으로 정규표현식 :[0-9] 을 나눠보면 “:” 으로 시작하는 모든 숫자를 나타냅니다.
([0-9]는 모든 숫자를 가리킴)

sort는 참 유용한 쉘입니다. 말 그대로 정렬한다는 것인데
printf “1
5
3
“|sort 라고 쉘에서 처보면 순서대로 1,3,5로 출력되는것을 확인할 수 있습니다.
여기서. 옵션 -u는 출력 내용이 같은 것은 한번만 출력하는것입니다.

wc 이것 또한 참 유용한 쉘이죠 ~ 단어의 수를 알아내는 것으로 한줄에 한해서만 단어의 수를 샙니다. 이를 이용해서 몇줄이 나왔는지를 알수있는데 -ㅣ 옵션을 주면 몇줄이 출력되었는지만을 나타냅니다.

전체적으로 분석을 하면
netstat -n|grep -F :80|egrep ‘(ESTAB|SYN)’|awk ‘{print $5}’|sed ‘s/:[0-9]*//’|sort -u|wc -l
명령은 netstat유틸을 이용해서 네트워크의 상황을 출력하고 이 중에 grep 를 이용해 :80 문자만을 나타내고있는 줄만 출력하며 egrep를 이용해 ESTAB이나 SYN이있는 줄만 출력하며 awk를 이용해 접속하고있는 클라이언트만을 표시하며 sed를 이용해 클라이언트의 포트를 제거하고 sort를 이용해서 중복된 IP를 제거하고 마지막으로 숫자만을 출력하기위해 wc를 이용한것입니다 ^ㅡ^;;