TightVNC를 이용한 reverse connection
글쓴이: amchiryo / 작성시간: 토, 2004/01/03 - 4:04오후
안녕하세요.
이 내용은
http://bbs.kldp.org/viewtopic.php?t=28261&highlight=vnc
에 aero님이 쓰신 것을 이용해 리눅스 용으로 바꾼 것입니다.
aero님에게 감사드립니다.
저의 경우 회사내에서 사설IP를 이용하는 컴퓨터에
리눅스를 깔고 제 자료를 모두 넣는 서버로 사용중입니다.
그런데 문제가 하나 있었습니다.
즉, 집에 있을 때, 제 자료를 접근하고 싶어도
접근이 안되는 것입니다.
당연히 안되는 것이지요...
네트웍 외부에서 사설IP로 된 내부
네트웍을 접속할 수는 없으니까요...
이 문제를 해결하기 위해 고민, 고민을 하다가
aero 님의 팁을 보았으나...
윈도우용이라는 것이 문제였습니다.
리눅스용으로 바꿀 수 없는지 comment를 달았지만
답변을 얻지는 못하였습니다.
그래서 제가 허접하게 PHP를 이용하여 아래와 같이
짜서 사용중(2시간째)인데, 아직은 문제가 없습니다.
필요한 것: vnc.txt 파일을 올리고 읽을 수 있는 홈페이지 계정
사용법: php -a vnc.php
* 반드시 앞에 링크한 aero님의 팁을 먼저 보셔야 이해가 될 겁니다.
* 개선된 것이 있으면 팁 또는 comment로 올려 주세요...
감사합니다.
==vnc.php : 아래부터 copy 해서 파일을 만드세요. ===============================
<?php set_time_limit(0); // there is no time limit in this program execution function ReturnEntireArray($array,$root) { $result = ''; foreach (array_keys($array) as $element) { $my_array=$array[$element]; if(is_array($my_array)) { ShowEntireArray($my_array,$root . "[" . $element . "]"); } else { $result .= $root . "[" . $element . "]=" . $array[$element]; } } return $result; } function GetURL($url_file) {$fh = fopen($url_file, 'r'); // use 'r' so file can be read if ($fh) { $url = fread($fh, 20); $url = trim($url); fclose($fh); } else echo "Could not open URL file '$url_file'"; #echo "URL is '$url'"; return $url; } function GetNetstat() {$str=exec("/bin/netstat -an", $array); $netstat_result = ReturnEntireArray($array, ''); #echo $netstat_result; return $netstat_result; } ######################################################################## # definition of basic parameters ######################################################################## $url_file = 'http://your domain/vnc.txt'; $interval = 30; // 30 seconds interval before reacquisition of URL from $url_file ######################################################################## # Main # 1) acquisition of URL and reverse connection to the acquired URL # within perpetual loop of 30 seconds interval # 2) if the reverse connection is not made, there should be # an attempt to connect with the aquired URL ######################################################################## while(1){ $url = GetURL($url_file); $netstat = GetNetstat(); #echo $url; #echo $netstat; if (!preg_match("/$url:5500/", $netstat)) { $vnc=system("vncconnect -display your_display ".$url.":5500"); } sleep ($interval); // waits for $interval seconds } ?>
Forums:
위 소스에서 your domain,your display라고
위 소스에서
your domain,
your display
라고 된 부분만 바꾸시면
바로 사용이 가능합니다.
래드햇 엔터프라이즈에 포함되어 있는 RealVNC용 배시 스크립입니다.
vncserver 등을 사용하여 Xvnc 데몬이 동작중이어야 합니다.
댓글 달기