Process p;
String osName = System.getProperty("os.name");
InputStream stdout = null;
InputStream stderr = null;
String[] cmd;
if(osName.toLowerCase().startsWith("window")) {
cmd = new String[] { "cmd.exe", "/y", "/c", command };
} else {
cmd = new String[] { "/bin/sh", "-c", command };
}
p = Runtime.getRuntime().exec(cmd);
p.waitFor(); // wait for process finishing.
// 외부 프로그램 출력 읽기
// "표준 출력"과 "표준 에러 출력"을 출력
stdout = p.getInputStream();
BufferedReader out_br = new BufferedReader(new InputStreamReader(stdout));
String line = null;
while ( (line=out_br.readLine()) != null) out.println(line);
stderr = p.getErrorStream();
BufferedReader err_br = new BufferedReader(new InputStreamReader(stderr));
while ( (line=err_br.readLine()) != null) out.println(line);
// 외부 프로그램 반환값 출력 (이 부분은 필수가 아님)
System.out.println("Exit Code: " + p.exitValue());
System.exit(p.exitValue()); // 외부 프로그램의 반환값을, 이 자바 프로그램 자체의 반환값으로 삼기
ln [-s] file_name link_name
-s : Symbolic Link 를 생성할 때 지정한다. 생략하면 Hard Link² 가 된다.
file_name : Link를 생성하고자 하는 화일명
link_name : 생성하고자 하는 화일명
Symbolic Link : 화일의 내용을 Link하지 않고 화일의 Path정보만을 Link 한다.
링크 생성명에 @ 가 붙는다.
링크가 삭제되어도 원본 파일에 영향을 주지 않는다.
디렉토리도 링크할 수 있다.
※ Symbolic Link 는 화일 하나를 여러 사람이 공유해서 사용하는 경우에 유용하다
Hard Link : 실제 화일의 내용을 Link 한다. 링크를 하면 해당화일의 링크수가 증가하게
되면 해당 링크를 삭제하면 링크수가 감소한다.
이때 해당 링크수가 0에 도달하면 원본 파일이 삭제된다.
디렉토리는 링크 할 수 없다.
예1) % ln emp_file emp_link_file
: emp_file 이라는 화일을 emp_link_file이라는 이름의 하드링크를 생성한다.
이 경우는 emp_file과 같은 디렉토리에 emp_link_file이 생성된다.
생성결과) emp_link_file
예2) % ln /bin/ls dir
: /bin 디렉토리에 있는 ls 라는 화일을 내 현재 Directory에 dir 이라는 이름의 하드링크로 생성한다.
생성결과) dir*
예3) % ln -s /bin/as dir
: 디렉토리 /bin/as를 dir로 새로운 Symbolic 링크를 생성한다.
생성결과) dir@ -> /bin/ls*
[출처] [Unix]File System - Link 만들기 [ln]|작성자 이지
document.getElementById("header1");
<h1 id="header1" onclick="getValue()">제목</h1>
--------- 여러개의 elements 를 가져온다. --------
document.getElementsByName("gender");
<input type="radio" name="gender" value="m">남
<input type="radio" name="gender" value="f">여
Local Port Forwarding : Client to Server Port 포워딩 (클라이언트의 특정포트를 서버로)
Remore Port Forwarding : Server to Client 포워딩 (서버의 특정포트는 클라이언트로)
http://kanie.lovlog.net/1500862 에서 발췌..
SSH 터널링이란 - 특정한 포트로 들어오는 IP 패킷을 SSH 접속을 이용해 다른 컴퓨터로 중계해 주는 프로토콜을 가리킵니다. SSH 터널링을 이용하면 방화벽이나 사설망 안에 물려 있어 외부에서 접속이 불가능한 PC에 접속하는 것이 가능합니다.
다음과 같은 시나리오를 예로 들어 보겠습니다.
직장의 사설망 내부에 작업용으로 사용하는 리눅스 PC가 있습니다. 외부에 있는 윈도우 컴퓨터에서 putty로 작업용 PC에 접속하고 싶습니다. 이때 사설망 외부에 SSH 서버가 있다면 터널링을 이용해 작업용 리눅스에 접속할 수 있습니다.
세 대의 컴퓨터가 각각 다음과 같은 이름을 가졌다고 가정합시다.
office_linux_pc : 사설망 내부에서 사용하는 linux pc. 사설 IP는 192.168.0.101 이라고 합시다.
ssh_server : 사설망 외부의 SSH 서버. IP는 147.46.101.102 이고, 계정 이름은 kanie라고 합시다. (도메인 이름이 있다면 ip 대신 도메인 이름을 사용해도 됩니다.)
home_windows_pc : 외부에 있는 윈도우 컴퓨터. 인터넷에 접속만 가능하다면 IP는 무관합니다.
필요한 프로그램은 다음과 같습니다.
office_linux_pc : 이 컴퓨터에 SSH로 접속하고 싶은 것이니만큼 SSH 서버가 필요하겠죠. HTTP로 접속하고 싶다면 역시 HTTP 서버가 필요합니다. 서버가 설치되어 있다면 루트 권한이 필요하지는 않습니다.
ssh_server : SSH 서버가 필요합니다. root 권한을 가질 필요는 없습니다.
home_windows_pc : 윈도우용 SSH 클라이언트인 putty를 설치합시다. putty와 같이 따라오는 윈도우 커맨드라인용 ssh 클라이언트인 plink도 필요합니다.
office_linux_pc에서 ssh_server로 SSH 링크를 엽니다. 147.46.101.102 서버의 3030번 포트로 들어오는 모든 접속을 localhost(이 경우 office_linux_pc가 되겠죠)의 22번 포트로 우회시키는 명령입니다. 22번 대신 80번 포트를 넣으면 외부에서 http 서버에 접속할 수 있습니다.
ssh -R 3030:localhost:22 kanie@147.46.101.102
패스워드를 물어보면 입력하고 접속하면 됩니다.
이제 office_linux_pc를 켜놓고 집으로 갑시다.
home_windows_pc에서 cmd로 콘솔을 열어 다음과 같이 입력합시다. 이번엔 localhost(home_windows_pc)의 4040번 포트로 들어오는 모든 접속을 147.46.101.102 서버의 3030번 포트로 우회시키는 명령입니다.
plink -L 4040:localhost:3030 kanie@147.46.101.102
이제 putty로 localhost:4040 포트에 접속합시다.
office_linux_pc의 ID와 password를 입력하고 접속하면 됩니다.
http://www.zxcasd.pe.kr/tt/entry/ssh-%ED%84%B0%EB%84%90%EB%A7%81 에서 발췌..
ssh 터널링은 공유기나 방화벽 내부의 pc에 접근 할 수 있도록 해준다.
환경
office : 방화벽 안에 있는 피씨 또는 공유기를 사용하는 피씨(192.168.x.x) 처럼 가상 IP를 사용하고 있다.
home : office의 공유기나 방화벽의 밖에 있다.
server : 포워딩 해줄 서버로, office와 home에서 모두 접근할 수 있다.

이올린에 북마크하기